Как отключить анимацию строки состояния и панели навигации при активации / деактивации полноэкранного режима в Android - PullRequest
0 голосов
/ 08 декабря 2018

Проблема

Активация и деактивация (иммерсивный) полноэкранный режим приводит к тому, что строка состояния, а также панель навигации "исчезают" и исчезают.Кажется, что анимация отличается на разных устройствах, и я хотел бы полностью отключить анимацию.Мой минимальный целевой SDK - 19;Тем не менее, я также был бы счастлив с решением, которое требует более высокого уровня API.Подробнее см. Ниже.

Запуск демо

Я реализовал (минимальный) демо, чтобы люди могли легко что-то тестировать.На GitHub доступно все:

Для пояснения я использую setSystemUiVisibility(FLAGS) для активации / деактивации полноэкранного режима.Далее я использую следующие флаги:

Активация полноэкранного режима:

int visibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                   | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                   | View.SYSTEM_UI_FLAG_FULLSCREEN
                   | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
mainView.setSystemUiVisibility(visibility);

Отключение полноэкранного режима:

int visibility = View.SYSTEM_UI_FLAG_VISIBLE;
mainView.setSystemUiVisibility(visibility);

Что япробовал

Я уже пробовал много разных вещей и провел много исследований.Далее я хочу кратко изложить основные подходы, которые я уже попробовал.

  1. Вместо использования "setSystemUiVisibility" (что, похоже, рекомендуется), многие люди рекомендуют использовать "getWindow () .setFlags "для изменения флагов.Однако установка флагов другим способом, похоже, не дает эффекта.Я также предполагаю, что это устарело.

  2. Кажется возможнымисключить строку состояния и панель навигации из перехода / выхода исчезновения при переключении между действиями.Тем не менее, это не оказывает никакого влияния на активацию / деактивацию полноэкранного режима.

  3. Некоторые люди просто рекомендуют разные флаги (просто чтобы скрыть полосы), но анимация остается прежней.

    View.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

  4. Некоторыелюди подчеркивают, что можно переопределить последующую анимацию с помощью «overridePendingTransition (0, 0)», но это не так работает в этом случае.

Как может выглядеть анимация

Просто чтобы уточнить, что яимею в виду.Ниже представлены анимации в формате gif, которые показывают анимацию состояния / панели навигации (извините, у меня нет разрешения на встраивание изображений)

Android 8.0 / Huawei / анимации затухания нет (обе полосы простоисчезать по мере необходимости, но затухание анимации).И строка состояния, и панель навигации мигают.

Android5.0 / Samsung / Анимация постепенного появления и исчезновения (панель навигации отсутствует).

(Поведениепанель действий соответствует ожиданиям.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...