Niektóre treści najlepiej oglądać na pełnym ekranie, bez żadnych wskaźników na pasku stanu lub pasku nawigacyjnym. Przykłady to filmy, gry, galerie obrazów, książki i slajdy prezentacji. Jest to tzw. tryb imersji. Na tej stronie dowiesz się, jak możesz bardziej zaangażować użytkowników dzięki treściom na pełnym ekranie.
Tryb imersji pomaga użytkownikom uniknąć przypadkowego wyjścia z gry i zapewnia im lepsze wrażenia podczas oglądania zdjęć i filmów oraz czytania książek. Pamiętaj jednak, jak często użytkownicy przechodzą między aplikacjami, aby sprawdzić powiadomienia, przeprowadzić szybkie wyszukiwanie lub wykonać inne czynności. Tryb imersji utrudnia użytkownikom dostęp do nawigacji systemowej, dlatego należy go używać tylko wtedy, gdy korzyści dla użytkownika wykraczają poza zwykłe wykorzystanie dodatkowego miejsca na ekranie.
Użyj WindowInsetsControllerCompat.hide(), aby ukryć paski systemowe, i WindowInsetsControllerCompat.show(), aby je przywrócić.
Poniższy fragment kodu pokazuje przykład konfigurowania przycisku do ukrywania i wyświetlania pasków systemowych.
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); }); }
Opcjonalnie możesz określić typ pasków systemowych, które mają być ukryte, oraz ich zachowanie, gdy użytkownik wejdzie z nimi w interakcję.
Określanie, które paski systemowe mają być ukryte
Aby określić typ pasków systemowych do ukrycia, przekaż jeden z tych parametrów do WindowInsetsControllerCompat.hide().
Użyj
WindowInsetsCompat.Type.systemBars(), aby ukryć oba paski systemowe.Użyj
WindowInsetsCompat.Type.statusBars(), aby ukryć tylko pasek stanu.Użyj
WindowInsetsCompat.Type.navigationBars(), aby ukryć tylko pasek nawigacyjny.
Określ zachowanie ukrytych pasków systemowych
Użyj WindowInsetsControllerCompat.setSystemBarsBehavior(), aby określić, jak ukryte paski systemowe mają się zachowywać, gdy użytkownik wejdzie z nimi w interakcję.
Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH, aby wyświetlić ukryte paski systemu podczas dowolnych interakcji użytkownika na odpowiednim wyświetlaczu.Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE, aby wyświetlić ukryte paski systemu przy użyciu dowolnych gestów systemowych, takich jak przesunięcie palcem od krawędzi ekranu, na której pasek jest ukryty.Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE, aby tymczasowo wyświetlić ukryte paski systemowe za pomocą gestów systemowych, takich jak przesunięcie palcem od krawędzi ekranu, na której pasek jest ukryty. Te tymczasowe paski systemu nakładają się na zawartość aplikacji, mogą mieć pewien stopień przezroczystości i są automatycznie ukrywane po krótkim czasie.