Niektóre treści najlepiej oglądać na pełnym ekranie bez żadnych wskaźników na pasku stanu ani pasku nawigacji. Dotyczy to m.in. filmów, gier, galerii obrazów, książek i slajdów prezentacji. Jest to tak zwany tryb pełnoekranowy. Ta strona pokazuje, jak możesz zwiększyć zaangażowanie użytkowników, prezentując treści w trybie pełnoekranowym.
Tryb pełnoekranowy pomaga użytkownikom uniknąć przypadkowego zamknięcia gry i zapewnia lepsze wrażenia podczas oglądania zdjęć, filmów i książek. Pamiętaj jednak, że użytkownicy często przełączają się między aplikacjami, aby sprawdzać powiadomienia, prowadzić spontaniczne wyszukiwania lub wykonywać inne czynności. Tryb pełnoekranowy powoduje, że użytkownicy tracą łatwy dostęp do nawigacji systemowej, dlatego używaj go tylko wtedy, gdy korzyści dla użytkownika wykraczają poza wykorzystanie dodatkowej przestrzeni na ekranie.
Użyj WindowInsetsControllerCompat.hide()
, aby ukryć paski systemowe, i WindowInsetsControllerCompat.show()
, aby je przywrócić.
Poniższy fragment kodu pokazuje przykład konfiguracji przycisku służącego do ukrywania i wyświetlania pasków systemu.
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ć, jakie paski systemowe chcesz ukryć, i jak mają się zachowywać, gdy użytkownik z nimi wejdzie w interakcję.
Określanie pasków systemu, które mają być ukryte
Aby określić, które paski systemu mają być ukryte, prześlij 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 nawigacji.
Określ zachowanie ukrytych pasków systemu
Użyj elementu WindowInsetsControllerCompat.setSystemBarsBehavior()
, aby określić zachowanie ukrytych pasków systemu podczas interakcji z nimi przez użytkownika.
Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
, aby wyświetlić ukryte paski systemu w przypadku każdej interakcji użytkownika na odpowiednim wyświetlaczu.Użyj gestu
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
, aby wyświetlić ukryte paski systemu podczas wykonywania gestów systemowych, takich jak przesuwanie palcem po krawędzi ekranu, na której pasek jest ukryty.Użyj
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
, aby tymczasowo wyświetlić ukryte paski systemu za pomocą gestów systemowych, takich jak przesuwanie palcem od krawędzi ekranu, na której znajduje się ukryty pasek. Te chwilowe paski systemowe nakładają się na zawartość aplikacji, mogą być w pewnym stopniu przezroczyste i automatycznie znikają po krótkim czasie.