Il est préférable d'utiliser certains contenus en plein écran sans aucun indicateur sur la la barre d'état ou la barre de navigation. (vidéos, jeux, images, etc.). des galeries, des livres et des diapositives de présentation. C'est ce que l'on appelle mode immersif. Cette page vous montre comment renforcer l'engagement des utilisateurs avec le contenu en plein écran.
Le mode immersif permet aux utilisateurs d'éviter les sorties accidentelles pendant un jeu et offre une expérience immersive pour profiter d'images, de vidéos et de livres. Toutefois, tenez compte de la fréquence à laquelle les utilisateurs accèdent à une application ou en sortent pour consulter les notifications. pour effectuer des recherches impromptues ou pour effectuer d'autres actions. Parce que le mode immersif les utilisateurs ne peuvent plus accéder facilement à la navigation système et n'utilisent que le mode immersif. lorsque l'avantage de l'expérience utilisateur va au-delà du simple fait d'utiliser un écran supplémentaire. l'espace de stockage.
Utiliser WindowInsetsControllerCompat.hide()
pour masquer les barres système et WindowInsetsControllerCompat.show()
pour les ramener.
L'extrait de code suivant montre comment configurer un bouton pour masquer et afficher les barres système.
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); }); }
Si vous le souhaitez, vous pouvez spécifier le type des barres système à masquer et à déterminer leur comportement lorsqu'un utilisateur interagit avec eux.
Spécifier les barres système à masquer
Pour spécifier le type de barres système à masquer, transmettez l'un des paramètres suivants
à WindowInsetsControllerCompat.hide()
.
Utilisez
WindowInsetsCompat.Type.systemBars()
pour masquer les deux barres système.Utilisez
WindowInsetsCompat.Type.statusBars()
pour masquer uniquement la barre d'état.Utilisez
WindowInsetsCompat.Type.navigationBars()
pour masquer uniquement la barre de navigation.
Spécifier le comportement des barres système masquées
Utiliser WindowInsetsControllerCompat.setSystemBarsBehavior()
pour spécifier le comportement des barres système masquées
lorsque l'utilisateur interagit avec elles.
Utiliser
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
pour révéler les barres système cachées lors de toutes les interactions des utilisateurs sur les l'écran.Utiliser
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
pour afficher les barres système masquées lors de tout geste système, comme le balayage depuis le bord de l'écran où la barre est masquée.Utiliser
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
pour afficher temporairement les barres système masquées à l'aide de gestes système tels que en balayant l'écran à partir du bord de l'écran où la barre est masquée. Ces les barres système temporaires se superposent au contenu de votre application, peuvent présenter la transparence et sont automatiquement masquées après un court délai.