Einige Inhalte werden am besten im Vollbildmodus ohne Anzeigen in der Statusleiste oder der Navigationsleiste wiedergegeben. Dazu gehören zum Beispiel Videos, Spiele, Bildergalerien, Bücher und Präsentationsfolien. Das wird als Immersivmodus bezeichnet. Auf dieser Seite wird beschrieben, wie Sie Nutzer mit Inhalten im Vollbildmodus stärker einbinden können.

Immersiver Modus hilft Nutzern, versehentliches Beenden während eines Spiels zu vermeiden, und bietet ein immersives Erlebnis beim Ansehen von Bildern, Videos und Büchern. Achten Sie jedoch darauf, wie oft Nutzer Apps öffnen und schließen, um Benachrichtigungen zu prüfen, spontane Suchanfragen durchzuführen oder andere Aktionen auszuführen. Da Nutzer im Immersive-Modus keinen einfachen Zugriff auf die Systemnavigation haben, sollten Sie ihn nur verwenden, wenn die Vorteile für die Nutzerfreundlichkeit über die Nutzung von zusätzlichem Bildschirmplatz hinausgehen.
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); }); }
Optional können Sie den Typ der zu verbergenden Systemleisten angeben und ihr Verhalten festlegen, wenn ein Nutzer mit ihnen interagiert.
Festlegen, welche Systemleisten ausgeblendet werden sollen
Um den Typ der Systemleisten anzugeben, die ausgeblendet werden sollen, übergeben Sie einen der folgenden Parameter an WindowInsetsControllerCompat.hide()
.
Verwenden Sie
WindowInsetsCompat.Type.systemBars()
, um beide Systemleisten auszublenden.Verwenden Sie
WindowInsetsCompat.Type.statusBars()
, um nur die Statusleiste auszublenden.Verwenden Sie
WindowInsetsCompat.Type.navigationBars()
, um nur die Navigationsleiste auszublenden.
Verhalten ausgeblendeter Systemleisten festlegen
Verwenden Sie WindowInsetsControllerCompat.setSystemBarsBehavior()
, um anzugeben, wie sich ausgeblendete Systemleisten verhalten, wenn der Nutzer mit ihnen interagiert.
Mit
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
können Sie verborgene Systemleisten bei beliebigen Nutzerinteraktionen auf dem entsprechenden Display einblenden.Verwenden Sie
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
, um verborgene Systemleisten bei beliebigen Systemgesten aufzurufen, z. B. durch Wischen vom Displayrand, an dem die Leiste verborgen ist.Mit
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
können Sie verborgene Systemleisten vorübergehend mit Systemgesten einblenden, z. B. durch Wischen vom Rand des Displays, an dem die Leiste verborgen ist. Diese temporären Systemleisten werden über den Inhalten Ihrer App eingeblendet, sind möglicherweise teilweise transparent und werden nach kurzer Zeit automatisch ausgeblendet.