Реагировать на изменения видимости пользовательского интерфейса

В этом уроке описывается, как зарегистрировать прослушиватель, чтобы ваше приложение могло получать уведомления об изменениях видимости пользовательского интерфейса системы. Это полезно, если вы хотите синхронизировать другие части вашего пользовательского интерфейса со скрытием/отображением системных панелей.

Регистрация слушателя

Чтобы получать уведомления об изменениях видимости пользовательского интерфейса системы, зарегистрируйте View.OnSystemUiVisibilityChangeListener в своем представлении. Обычно это представление, которое вы используете для управления видимостью навигации.

Например, вы можете добавить этот код в метод onCreate() вашей активности:

Котлин

window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
    // Note that system bars will only be "visible" if none of the
    // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
    if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
        // TODO: The system bars are visible. Make any desired
        // adjustments to your UI, such as showing the action bar or
        // other navigational controls.
    } else {
        // TODO: The system bars are NOT visible. Make any desired
        // adjustments to your UI, such as hiding the action bar or
        // other navigational controls.
    }
}

Ява

View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener
        (new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        // Note that system bars will only be "visible" if none of the
        // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
            // TODO: The system bars are visible. Make any desired
            // adjustments to your UI, such as showing the action bar or
            // other navigational controls.
        } else {
            // TODO: The system bars are NOT visible. Make any desired
            // adjustments to your UI, such as hiding the action bar or
            // other navigational controls.
        }
    }
});

Обычно хорошей практикой является синхронизация пользовательского интерфейса с изменениями видимости системной панели. Например, вы можете использовать этот прослушиватель для скрытия и отображения панели действий одновременно со скрытием и отображением строки состояния.