Niektóre treści najlepiej oglądać na pełnym ekranie bez żadnych wskaźników na pasku stanu czy pasku nawigacyjnym. Mogą to być filmy, gry, galerie obrazów, książki i slajdy do prezentacji. Jest to tzw. tryb pojemny. Ta strona pokazuje, jak możesz zaangażować użytkowników, wyświetlając treści na pełnym ekranie.
Tryb pojemny pomaga użytkownikom uniknąć przypadkowego zamknięcia gry i zapewnia niezwykłe wrażenia podczas korzystania z obrazów, filmów i książek. Pamiętaj jednak, jak często użytkownicy wracają do aplikacji i wychodzą z nich, aby sprawdzić powiadomienia, przeprowadzić niezaplanowane wyszukiwanie lub wykonać inne działania. W trybie pojemnym użytkownicy tracą łatwy dostęp do nawigacji w systemie, dlatego używaj trybu pojemnego tylko wtedy, gdy korzyści dla użytkowników wykraczają poza dodatkowe miejsce na ekranie.
Kliknij WindowInsetsControllerCompat.hide()
, aby ukryć paski systemu, 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 określić ich zachowanie, gdy użytkownik wejdzie z nimi w interakcję.
Określ, które paski systemowe mają być ukryte
Aby określić typ pasków systemowych do ukrycia, przekaż do WindowInsetsControllerCompat.hide()
jeden z tych parametrów.
Użyj
WindowInsetsCompat.Type.systemBars()
, aby ukryć oba paski systemowe.Użyj opcji
WindowInsetsCompat.Type.statusBars()
, aby ukryć tylko pasek stanu.Aby ukryć tylko pasek nawigacyjny, użyj opcji
WindowInsetsCompat.Type.navigationBars()
.
Określ zachowanie ukrytych pasków systemu
Użyj właściwości WindowInsetsControllerCompat.setSystemBarsBehavior()
, aby określić, jak ukryte paski systemu zachowują się, gdy użytkownik wchodzi z nimi w interakcję.
Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
, aby wyświetlić ukryte paski systemu w przypadku wszystkich interakcji użytkownika na odpowiednim wyświetlaczu.Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
, aby wyświetlić ukryte paski systemowe w przypadku wszystkich gestów systemowych, np. przesunięcia palcem od krawędzi ekranu, w której pasek jest ukryty.Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
, aby tymczasowo wyświetlać ukryte paski systemowe za pomocą gestów systemowych, np. przesuwania od krawędzi ekranu, w której pasek jest ukryty. Te przejściowe paski systemu nakładają się na zawartość aplikacji, mogą być w pewnym stopniu przezroczyste. Po krótkim czasie oczekiwania są automatycznie ukrywane.