Einige Inhalte lassen sich am besten im Vollbildmodus ohne Statusleiste oder Navigationsleiste ansehen. Dazu gehören beispielsweise Videos, Spiele, Bilder galerien, Bücher und Präsentationsfolien. Dies wird als Immersionsmodus bezeichnet. Auf dieser Seite erfahren Sie, wie Sie Nutzer im Vollbildmodus stärker in Inhalte einbeziehen können.
Im Immersionsmodus können Nutzer versehentliche Ausstiege während eines Spiels vermeiden und Bilder, Videos und Bücher in einer immersiven Umgebung genießen. Sie sollten jedoch darauf achten, wie oft Nutzer Apps verlassen und wieder aufrufen, um Benachrichtigungen zu prüfen, spontane Suchanfragen durchzuführen oder andere Aktionen auszuführen. Da der Immersionsmodus den einfachen Zugriff auf die Systemnavigation verhindert, sollten Sie ihn nur verwenden, wenn der Nutzen für die Nutzerfreundlichkeit über die Nutzung von zusätzlichem Bildschirmplatz 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 Ausblenden 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 auszublendenden Systemleisten angeben und ihr Verhalten festlegen, wenn ein Nutzer mit ihnen interagiert.
Festlegen, welche Systemleisten ausgeblendet werden sollen
Wenn Sie den Typ der auszublendenden Systemleisten angeben möchten, ü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 festzulegen, wie sich ausgeblendete Systemleisten verhalten, wenn der Nutzer mit ihnen interagiert.
Verwenden Sie
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH, um ausgeblendete Systemleisten bei jeder Nutzerinteraktion auf dem entsprechenden Display einzublenden.Verwenden Sie
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPEum ausgeblendete Systemleisten bei allen Systemgesten einzublenden, z. B. beim Wischen vom Rand des Bildschirms, an dem die Leiste ausgeblendet ist.Verwenden Sie
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPEum ausgeblendete Systemleisten mit Systemgesten vorübergehend einzublenden, z. B. beim Wischen vom Rand des Bildschirms, an dem die Leiste ausgeblendet ist. Diese vorübergehenden Systemleisten überlagern die Inhalte Ihrer App, sind möglicherweise teilweise transparent und werden nach einer kurzen Zeitüberschreitung automatisch ausgeblendet.