Einige Inhalte werden am besten im Vollbildmodus ohne Indikatoren in der Statusleiste oder Navigationsleiste angezeigt. Beispiele hierfür sind Videos, Spiele, Bildergalerien, Bücher und Präsentationsfolien. Das wird als Immersiver Modus bezeichnet. Auf dieser Seite erfährst du, wie du Nutzer mit Inhalten im Vollbildmodus besser ansprechen kannst.
Der immersive Modus hilft Nutzern, versehentliches Beenden während eines Spiels zu vermeiden, und bietet ein immersives Erlebnis beim Ansehen von Bildern, Videos und Büchern. Berücksichtigen Sie jedoch, wie oft Nutzer Apps öffnen und wieder schließen, um Benachrichtigungen zu prüfen, spontane Suchanfragen durchzuführen oder andere Aktionen auszuführen. Da Nutzer im Vollbildmodus keinen einfachen Zugriff auf die Systemnavigation haben, sollten Sie ihn nur verwenden, wenn der Vorteil für die Nutzerfreundlichkeit über die zusätzliche Bildschirmfläche hinausgeht.
Mit WindowInsetsControllerCompat.hide()
können Sie die Systemleisten ausblenden und mit WindowInsetsControllerCompat.show()
wieder einblenden.
Im folgenden Snippet wird ein Beispiel für die Konfiguration einer Schaltfläche zum Ausblenden und Einblenden der Systemleisten gezeigt.
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 angeben, welche Systemleisten ausgeblendet werden sollen, und ihr Verhalten festlegen, wenn ein Nutzer mit ihnen interagiert.
Festlegen, welche Systemleisten ausgeblendet werden sollen
Um anzugeben, welche Systemleisten ausgeblendet werden sollen, übergeben Sie einen der folgenden Parameter an WindowInsetsControllerCompat.hide()
.
Mit
WindowInsetsCompat.Type.systemBars()
können Sie beide Systemleisten ausblenden.Mit
WindowInsetsCompat.Type.statusBars()
können Sie nur die Statusleiste ausblenden.Mit
WindowInsetsCompat.Type.navigationBars()
können Sie nur die Navigationsleiste ausblenden.
Verhalten ausgeblendeter Systemleisten festlegen
Mit WindowInsetsControllerCompat.setSystemBarsBehavior()
können Sie festlegen, wie sich ausgeblendete Systemleisten verhalten, wenn Nutzer mit ihnen interagieren.
Mit
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
können Sie ausgeblendete Systemleisten bei jeder Nutzerinteraktion auf dem entsprechenden Display anzeigen.Mit
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
können Sie ausgeblendete Systemleisten bei allen Systemgesten anzeigen lassen, z. B. durch Wischen vom Displayrand, an dem die Leiste ausgeblendet ist.Mit
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
können Sie ausgeblendete Systemleisten vorübergehend mit Systemgesten einblenden, z. B. durch Wischen vom Rand des Displays, an dem die Leiste ausgeblendet ist. Diese vorübergehenden Systemleisten werden über die Inhalte Ihrer App gelegt, können teilweise transparent sein und werden nach einer kurzen Zeit automatisch ausgeblendet.