این درس نحوه کم نور کردن نوارهای سیستم (یعنی وضعیت و نوارهای پیمایش) را در اندروید 4.0 (سطح API 14) و بالاتر توضیح می دهد. اندروید روش داخلی برای کم نور کردن نوارهای سیستم در نسخه های قبلی ارائه نمی دهد.
وقتی از این روش استفاده می کنید، اندازه محتوا تغییر نمی کند، اما نمادهای موجود در نوارهای سیستم به صورت بصری عقب می نشینند. به محض اینکه کاربر نوار وضعیت یا ناحیه نوار ناوبری صفحه را لمس کند، هر دو نوار کاملاً قابل مشاهده می شوند. مزیت این رویکرد این است که میلهها هنوز وجود دارند اما جزئیات آنها مبهم است، بنابراین تجربهای غوطهورکننده بدون به خطر انداختن دسترسی آسان به میلهها ایجاد میکند.
نوارهای وضعیت و پیمایش را کم نور کنید
می توانید با استفاده از پرچم 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);
به محض اینکه کاربر نوار وضعیت یا ناوبری را لمس میکند، پرچم پاک میشود و باعث میشود نوارها کمرنگ شوند. هنگامی که پرچم پاک شد، اگر می خواهید دوباره نوارها را کم کنید، برنامه شما باید آن را بازنشانی کند.
شکل 1 یک تصویر گالری را نشان می دهد که در آن نوار پیمایش کم نور است (توجه داشته باشید که برنامه گالری نوار وضعیت را کاملاً پنهان می کند، آن را کم نور نمی کند). توجه داشته باشید که نوار ناوبری (سمت راست تصویر) دارای نقاط سفید کم رنگی است که نشان دهنده کنترل های ناوبری است:
شکل 2 همان تصویر گالری را نشان می دهد، اما با نوارهای سیستم نمایش داده شده است:
نوارهای وضعیت و ناوبری را آشکار کنید
اگر میخواهید پرچمهای تنظیم شده با 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);