Затемнение системных строк (устарело)

В этом уроке описывается, как затемнить системные строки (строку состояния и панель навигации) в 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);