Einige Inhalte werden am besten im Vollbildmodus ohne Anzeigen in der Statusleiste oder der Navigationsleiste dargestellt. Beispiele sind Videos, Spiele, Bildergalerien, Bücher und Präsentationsfolien. Dies wird als immersiver Modus bezeichnet. Auf dieser Seite wird beschrieben, wie Sie Nutzer mit Vollbildinhalten stärker einbinden können.
Der immersive Modus verhindert, dass Nutzer ein Spiel versehentlich beenden, und bietet ein immersives Erlebnis beim Ansehen von Bildern, Videos und Büchern. Beachten Sie jedoch, wie oft Nutzer zwischen Apps wechseln, um Benachrichtigungen zu prüfen, spontane Suchanfragen durchzuführen oder andere Aktionen auszuführen. Da Nutzer im immersiven Modus den einfachen Zugriff auf die Systemnavigation verlieren, solltest du ihn nur verwenden, wenn der Vorteil für die Nutzerfreundlichkeit über die einfache Nutzung von zusätzlichem Bildschirmplatz hinausgeht.
Verwende 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 Aus- und Einblenden 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 Systemleisten angeben, die ausgeblendet werden sollen, und ihr Verhalten festlegen, wenn ein Nutzer mit ihnen interagiert.
Angeben, welche Systemleisten ausgeblendet werden sollen
Wenn du den Typ der auszublendenden Systemleisten angeben möchtest, übergib einen der folgenden Parameter an WindowInsetsControllerCompat.hide().
Verwende
WindowInsetsCompat.Type.systemBars(), um beide Systemleisten auszublenden.Verwenden Sie
WindowInsetsCompat.Type.statusBars(), um nur die Statusleiste auszublenden.Verwende
WindowInsetsCompat.Type.navigationBars(), um nur die Navigationsleiste auszublenden.
Verhalten ausgeblendeter Systemleisten festlegen
Mit WindowInsetsControllerCompat.setSystemBarsBehavior() kannst du festlegen, wie sich ausgeblendete Systemleisten verhalten, wenn der Nutzer mit ihnen interagiert.
Verwende
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH, um ausgeblendete Systemleisten bei allen Nutzerinteraktionen auf dem entsprechenden Display einzublenden.Verwenden Sie
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE, um ausgeblendete Systemleisten bei System-Gesten einzublenden, z. B. beim Wischen vom Bildschirmrand, an dem die Leiste ausgeblendet ist.Verwende
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE, um ausgeblendete Systemleisten vorübergehend mit System-Gesten einzublenden, z. B. durch Wischen vom Rand des Displays, an dem die Leiste ausgeblendet ist. Diese vorübergehenden Systemleisten überlagern den Inhalt Ihrer App, können einen gewissen Grad an Transparenz aufweisen und werden nach einer kurzen Zeit automatisch ausgeblendet.