Как отключить анимацию строки состояния и панели навигации при активации/деактивации полноэкранного режима в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как отключить анимацию строки состояния и панели навигации при активации/деактивации полноэкранного режима в Android

Сообщение Anonymous »

Проблема
Включение и отключение (иммерсивного) полноэкранного режима приводит к тому, что строка состояния, а также панель навигации «затухают» и исчезают. Кажется, что анимация различается на разных устройствах, и я хотел бы полностью отключить анимацию. Мой минимальный целевой 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);
Что я пробовал
Я уже пробовал много разных вещей и провел много исследований. Ниже я хочу кратко изложить основные подходы, которые я уже опробовал.
  • Вместо использования setSystemUiVisibility (что, похоже, рекомендуется) многие люди рекомендуют использовать getWindow().setFlags для изменения флагов. Однако установка флагов другим способом, похоже, не дает эффекта. Я также предполагаю, что это устарело.
  • как удалить анимацию строки состояния при переходе в полноэкранный режим в Android
  • Скрыть и показать строку состояния одновременно с панелью инструментов в Android
  • Android: отключить и включить программное вытягивание строки состояния для API 19
  • скрыть и показать строку состояния без какого-либо влияния на макет в android
  • Android: показать/скрыть строку состояния/панель питания
  • Кажется, можно исключить строку состояния и панель навигации из перехода выхода/входа с исчезновением при переключении между действиями. Однако, похоже, это не оказывает никакого влияния на активацию/деактивацию полноэкранного режима.
  • Как предотвратить анимацию строки состояния и панели навигации во время перехода анимации сцены действия?
  • Некоторые люди просто рекомендуют разные флаги (в общем, чтобы скрыть полосы), но анимация остается то же самое.

    Код: Выделить всё

    View.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
  • Android: возможность автоматического скрытия заголовка/строки состояния?
  • Некоторые отмечают, что можно переопределить последующую анимацию с помощью overridePendingTransition(0, 0)
    но в данном случае это не работает.
  • Есть ли способ удалить строку уведомлений/статуса, но не в onCreate?
Как может выглядеть анимация
Просто чтобы прояснить, что я имею в виду. Далее приведены gif-анимации, которые показывают анимацию строки состояния/навигации (извините, у меня нет разрешения на встраивание изображений)
Android 8.0 / Huawei / Анимация затухания отсутствует (обе полосы просто исчезают по мере необходимости, но анимация постепенно исчезает). И строка состояния, и панель навигации мигают.
  • Анимация панели состояния
  • Анимация панели навигации
Android 5.0 / Samsung / Анимация постепенного появления и исчезновения (панели навигации нет).
  • Анимация панели состояния
(Поведение панели действий соответствует ожиданиям.)

Подробнее здесь: https://stackoverflow.com/questions/536 ... eactivatin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»