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

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

Как только пользователь касается панели состояния или панели навигации, флаг снимается, и панели перестают затемняться. После снятия флага вашему приложению необходимо сбросить его, если вы хотите снова затемнить полосы.

На рис. 1 показано изображение галереи, в котором панель навигации затемнена (обратите внимание, что приложение «Галерея» полностью скрывает строку состояния; оно не затемняет ее). Обратите внимание, что на панели навигации (правая часть изображения) есть бледные белые точки, обозначающие элементы управления навигацией:

системные панели

Рисунок 1. Затемненные системные панели.

На рис. 2 показано то же изображение галереи, но с отображенными системными панелями:

системные панели

Рисунок 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);