Некоторый контент лучше всего воспринимается в полноэкранном режиме без индикаторов в строке состояния или на панели навигации. Примеры: видео, игры, галереи изображений, книги и слайды презентаций. Это называется режимом погружения. На этой странице рассказывается, как повысить вовлеченность пользователей с помощью полноэкранного режима.
Режим погружения помогает пользователям избежать случайного выхода из игры и позволяет полностью погрузиться в просмотр изображений, видео и книг. Однако помните, как часто пользователи переключаются между приложениями, чтобы проверить уведомления, выполнить поиск или сделать что-то ещё. Поскольку в режиме комфортного просмотра пользователи теряют доступ к системной навигации, используйте его только в том случае, если он действительно улучшает взаимодействие с приложением, а не просто увеличивает область просмотра.
Используйте WindowInsetsControllerCompat.hide(), чтобы скрыть системные строки, и WindowInsetsControllerCompat.show(), чтобы вернуть их.
В следующем фрагменте кода показано, как настроить кнопку, чтобы скрывать и показывать системные строки.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { ... val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView) // Configure the behavior of the hidden system bars. windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE // Add a listener to update the behavior of the toggle fullscreen button when // the system bars are hidden or revealed. ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, windowInsets -> // You can hide the caption bar even when the other system bars are visible. // To account for this, explicitly check the visibility of navigationBars() // and statusBars() rather than checking the visibility of systemBars(). if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars()) || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) { binding.toggleFullscreenButton.setOnClickListener { // Hide both the status bar and the navigation bar. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) } } else { binding.toggleFullscreenButton.setOnClickListener { // Show both the status bar and the navigation bar. windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) } } ViewCompat.onApplyWindowInsets(view, windowInsets) } }
Java
@Override protected void onCreate(Bundle savedInstanceState) { ... WindowInsetsControllerCompat windowInsetsController = WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView()); // Configure the behavior of the hidden system bars. windowInsetsController.setSystemBarsBehavior( WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE ); // Add a listener to update the behavior of the toggle fullscreen button when // the system bars are hidden or revealed. ViewCompat.setOnApplyWindowInsetsListener( getWindow().getDecorView(), (view, windowInsets) -> { // You can hide the caption bar even when the other system bars are visible. // To account for this, explicitly check the visibility of navigationBars() // and statusBars() rather than checking the visibility of systemBars(). if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars()) || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) { binding.toggleFullscreenButton.setOnClickListener(v -> { // Hide both the status bar and the navigation bar. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()); }); } else { binding.toggleFullscreenButton.setOnClickListener(v -> { // Show both the status bar and the navigation bar. windowInsetsController.show(WindowInsetsCompat.Type.systemBars()); }); } return ViewCompat.onApplyWindowInsets(view, windowInsets); }); }
При необходимости вы можете указать, какие системные строки нужно скрыть, и определить их поведение при взаимодействии с пользователем.
Укажите, какие системные строки нужно скрыть.
Чтобы указать, какие системные строки нужно скрыть, передайте в WindowInsetsControllerCompat.hide() один из следующих параметров:
Чтобы скрыть обе системные строки, используйте
WindowInsetsCompat.Type.systemBars().Используйте
WindowInsetsCompat.Type.statusBars(), чтобы скрыть только строку состояния.Используйте
WindowInsetsCompat.Type.navigationBars(), чтобы скрыть только панель навигации.
Как настроить поведение скрытых системных строк
Используйте WindowInsetsControllerCompat.setSystemBarsBehavior(), чтобы указать, как скрытые системные строки ведут себя, когда пользователь взаимодействует с ними.
Используйте
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH, чтобы показывать скрытые системные строки при любом взаимодействии пользователя с соответствующим экраном.Используйте
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE, чтобы показывать скрытые системные строки при выполнении системных жестов, например проведении по экрану от края, где скрыта строка.Используйте
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE, чтобы временно показывать скрытые системные строки с помощью системных жестов, например проводя пальцем от края экрана, где скрыта строка. Эти временные системные строки накладываются на контент приложения, могут быть частично прозрачными и автоматически скрываются через короткое время.