Einige Inhalte lassen sich am besten im Vollbildmodus ohne Indikatoren in der Statusleiste oder der Navigationsleiste ansehen. Beispiele hierfür sind Videos, Spiele, Bildergalerien, Bücher und Präsentationsfolien. Dies wird als immersiver Modus bezeichnet. Auf dieser Seite erfahren Sie, wie Sie Nutzer mit Inhalten im Vollbildmodus noch besser ansprechen können.
Der immersive Modus hilft Nutzern, versehentliches Beenden eines Spiels zu vermeiden, und bietet ein immersives Erlebnis mit Bildern, Videos und Büchern. Überlege dir jedoch, wie oft Nutzer zwischen Apps wechseln, um Benachrichtigungen zu lesen, spontane Suchen durchzuführen oder andere Aktionen durchzuführen. Da der immersive Modus dazu führt, dass Nutzer nicht mehr einfach auf die Systemsteuerung zugreifen können, sollte er nur verwendet werden, wenn der Vorteil für die Nutzer über die Nutzung von zusätzlichem Platz auf dem Bildschirm hinausgeht.
Verwenden Sie WindowInsetsControllerCompat.hide()
, um die Systemleisten auszublenden, und WindowInsetsControllerCompat.show()
, um sie wieder einzublenden.
Das folgende Snippet zeigt ein Beispiel für die Konfiguration einer Schaltfläche zum Ein- und Ausblenden der Systemleisten.
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); }); }
Sie können optional den Typ der Systemleisten angeben, die ausgeblendet werden sollen, und ihr Verhalten festlegen, wenn ein Nutzer mit ihnen interagiert.
Angeben, welche Systembalken ausgeblendet werden sollen
Übergeben Sie einen der folgenden Parameter an WindowInsetsControllerCompat.hide()
, um den Typ der Systembalken anzugeben, die ausgeblendet werden sollen.
Mit
WindowInsetsCompat.Type.systemBars()
können Sie beide Systemleisten ausblenden.Verwenden Sie
WindowInsetsCompat.Type.statusBars()
, um nur die Statusleiste auszublenden.Verwenden Sie
WindowInsetsCompat.Type.navigationBars()
, um nur die Navigationsleiste auszublenden.
Verhalten ausgeblendeter Systemleisten angeben
Mit WindowInsetsControllerCompat.setSystemBarsBehavior()
können Sie angeben, wie sich ausgeblendete Systemleisten verhalten, wenn der Nutzer mit ihnen interagiert.
Mit
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
werden ausgeblendete Systemleisten bei allen Nutzerinteraktionen auf dem entsprechenden Display eingeblendet.Mit
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
kannst du ausgeblendete Systemleisten bei allen Systemgesten einblenden, z. B. beim Wischen vom Bildschirmrand, wo die Leiste ausgeblendet ist.Verwenden Sie
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
, um ausgeblendete Systemleisten vorübergehend mit Systemgesten einzublenden, z. B. durch Wischen vom Bildschirmrand, wo die Leiste ausgeblendet ist. Diese vorübergehenden Systemleisten überlagern den Inhalt Ihrer App, können einen gewissen Transparenzgrad aufweisen und werden nach einer kurzen Zeitüberschreitung automatisch ausgeblendet.