Niektóre treści najlepiej oglądać na pełnym ekranie bez żadnych wskaźników na pasku stanu ani pasku nawigacji. Mogą to być na przykład filmy, gry, galerie zdjęć, książki i slajdy prezentacji. Jest to tak zwany tryb pełnoekranowy. Ta strona pokazuje, jak możesz bardziej zaangażować użytkowników, wyświetlając treści na pełnym ekranie.
Tryb pełnoekranowy pomaga użytkownikom uniknąć przypadkowego zamknięcia gry oraz zapewnia lepsze wrażenia podczas oglądania obrazów, 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ć.
Fragment kodu poniżej pokazuje przykład konfigurowania przycisku do ukrywania i wyświetlania słupkó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ć, 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.Aby ukryć tylko pasek stanu, użyj
WindowInsetsCompat.Type.statusBars()
.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 narzędzia
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
, aby tymczasowo pokazać ukryte paski systemowe za pomocą gestów systemowych, np. przez przesunięcie palcem od krawędzi ekranu, w miejscu, w którym pasek jest ukryty. Te tymczasowe paski systemu nakładają się na treść aplikacji, mogą być w pewnym stopniu przezroczyste i są automatycznie ukrywane po krótkim czasie oczekiwania.