В этом уроке описывается, как затемнить системные строки (строку состояния и панель навигации) в Android 4.0 (уровень API 14) и более поздних версиях. В более ранних версиях Android нет встроенного способа затемнения системных строк.
При таком подходе размер контента не меняется, но значки в системных строках визуально уменьшаются. Как только пользователь коснется строки состояния или панели навигации, они станут полностью видимыми. Преимущество такого подхода заключается в том, что панели по-прежнему присутствуют, но их детали скрыты, что создает эффект погружения, не жертвуя при этом легким доступом к панелям.
Затемнение строки состояния и панели навигации
Вы можете затемнить строку состояния и панель навигации с помощью флага SYSTEM_UI_FLAG_LOW_PROFILE, как показано ниже.
Kotlin
// This example uses decor view, but you can use any visible view. activity?.window?.decorView?.apply { systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE }
Java
// 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 показано изображение в галерее, на котором панель навигации затемнена (обратите внимание, что приложение "Галерея" полностью скрывает строку состояния, а не затемняет ее). Обратите внимание, что на панели навигации (справа) есть белые точки, которые представляют элементы управления навигацией:
Рисунок 1. Затемненные системные строки.
На рисунке 2 показано то же изображение, но с системными строками.
Рисунок 2. Видимые системные строки.
Как показать строку состояния и панель навигации
Чтобы программно очистить пометки, заданные с помощью setSystemUiVisibility(), выполните следующие действия:
Kotlin
activity?.window?.decorView?.apply { // Calling setSystemUiVisibility() with a value of 0 clears // all flags. systemUiVisibility = 0 }
Java
View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0);