این درس نحوه کمنور کردن نوارهای سیستم (یعنی نوارهای وضعیت و پیمایش) را در Android 4.0 (سطح میانای برنامهسازی کاربردی ۱۴) و بالاتر شرح میدهد. Android روشی داخلی برای کمنور کردن نوارهای سیستم در نسخههای قدیمیتر ارائه نمیدهد.
وقتی از این رویکرد استفاده میکنید، اندازه محتوا تغییر نمیکند، اما نمادهای موجود در نوارهای سیستم ازنظر بصری عقب میروند. بهمحض اینکه کاربر نوار وضعیت یا نوار پیمایش را در صفحهنمایش لمس کند، هر دو نوار کاملاً نمایان میشوند. مزیت این رویکرد این است که نوارها همچنان وجود دارند اما جزئیات آنها پنهان است، بنابراین تجربهای فراگیر ایجاد میشود بدون اینکه دسترسی آسان به نوارها ازبین برود.
تیره کردن نوار وضعیت و پیمایش
میتوانید بااستفاده از پرچم SYSTEM_UI_FLAG_LOW_PROFILE، نوارهای وضعیت و پیمایش را بهصورت زیر کمنور کنید:
کاتلین
// This example uses decor view, but you can use any visible view. activity?.window?.decorView?.apply { systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE }
جاوا
// This example uses decor view, but you can use any visible view. View decorView = getActivity().getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE; decorView.setSystemUiVisibility(uiOptions);
بهمحض اینکه کاربر نوار وضعیت یا پیمایش را لمس کند، پرچم پاک میشود، و باعث میشود نوارها از حالت کمنور خارج شوند. وقتی پرچم پاک شد، اگر میخواهید نوارها را دوباره کمنور کنید، برنامهتان باید آن را بازنشانی کند.
شکل ۱ تصویر گالریای را نشان میدهد که در آن نوار پیمایش کمنور شده است (توجه داشته باشید که برنامه «گالری» نوار وضعیت را کاملاً پنهان میکند و آن را کمنور نمیکند). توجه کنید که نوار پیمایش (سمت راست تصویر) نقطههای سفید کمرنگی دارد که نشاندهنده کنترلهای پیمایش است:
شکل ۱. نوارهای سیستم کمنور شده است.
شکل ۲ همان تصویر گالری را نشان میدهد، اما با نمایش نوارهای سیستم:
شکل ۲. نوارهای سیستم نمایان.
نمایش نوار وضعیت و پیمایش
اگر میخواهید پرچمهای تنظیمشده با
setSystemUiVisibility() را بهصورت برنامهنویسیشده پاک کنید، میتوانید
بهصورت زیر عمل کنید:
کاتلین
activity?.window?.decorView?.apply { // Calling setSystemUiVisibility() with a value of 0 clears // all flags. systemUiVisibility = 0 }
جاوا
View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0);