Niektóre treści najlepiej oglądać w trybie pełnoekranowym bez żadnych oznaczeń na na pasku stanu i nawigacji. Przykłady: filmy, gry, obraz w galeriach, książkach i prezentacjach. Jest to tzw. trybie pojemnym. Z tej strony dowiesz się, jak zaciekawić użytkowników treści na pełnym ekranie.
Tryb pojemny pomaga użytkownikom unikać przypadkowego wyjścia podczas gry oraz zapewnia niezwykłe wrażenia podczas oglądania zdjęć, filmów i książek. Zwracaj jednak uwagę na to, jak często użytkownicy przechodzą z aplikacji do aplikacji, aby sprawdzić powiadomienia, do przeprowadzania niezaplanowanych wyszukiwań lub podejmowania innych działań. Ponieważ tryb pojemny powoduje utratę łatwego dostępu do nawigacji w systemie, używaj tylko trybu pojemnego; gdy korzystanie z aplikacji wykracza poza zwykłe korzystanie z dodatkowego ekranu. kosmosu.
Użyj formatu WindowInsetsControllerCompat.hide()
aby ukryć paski systemowe oraz WindowInsetsControllerCompat.show()
sprowadzić ich z powrotem.
Fragment kodu poniżej pokazuje przykład konfigurowania przycisku do ukrywania i wyświetlania paski systemowe.
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 do ukrycia i określenia co robią, gdy użytkownik wejdzie z nim w interakcję.
Określ, które paski systemowe mają być ukryte
Aby określić typ słupków systemowych do ukrycia, przekaż jeden z tych parametrów
do WindowInsetsControllerCompat.hide()
.
Użyj aplikacji
WindowInsetsCompat.Type.systemBars()
, aby: ukryć oba paski systemowe.Użyj aplikacji
WindowInsetsCompat.Type.statusBars()
, aby: ukryć tylko pasek stanu.Użyj aplikacji
WindowInsetsCompat.Type.navigationBars()
, aby: ukryj tylko pasek nawigacyjny.
Określ zachowanie ukrytych pasków systemowych
Użyj formatu WindowInsetsControllerCompat.setSystemBarsBehavior()
aby określić, jak zachowują się ukryte paski systemowe, gdy użytkownik wejdzie z nimi w interakcję.
Użyj formatu
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
ukrytych pasków systemowych przy wszystkich interakcjach użytkownika na odpowiednich wyświetlacz.Użyj formatu
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
by pokazać ukryte paski systemowe dla gestów systemowych, takich jak do krawędzi ekranu, w której pasek jest ukryty.Użyj formatu
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
do tymczasowego pokazywania ukrytych pasków systemowych za pomocą gestów systemowych, takich jak przesuwając palcem od krawędzi ekranu, w którym jest ukryty. Te przejściowe paski systemowe nakładają się na treść aplikacji, mogą przezroczystość i są automatycznie ukrywane po krótkim czasie oczekiwania.