Cette leçon explique comment réduire la luminosité des barres système (c'est-à-dire l'état et la navigation barres) sur Android 4.0 (niveau d'API 14) ou version ultérieure. Android ne propose pas de fonctionnalité intégrée de réduction de la luminosité les barres système des versions antérieures.
Lorsque vous utilisez cette approche, le contenu n'est pas redimensionné, mais les icônes des barres système s’éloignent visuellement. Dès que l'utilisateur appuie sur la barre d'état ou la zone de la barre de navigation de l'écran, les deux barres deviennent entièrement visibles. L'avantage est que les barres sont toujours présentes mais leurs détails sont obscurcis, et de créer une expérience immersive sans sacrifier l'accès facile aux bars.
Atténuer la luminosité des barres d'état et de navigation
Vous pouvez assombrir les barres d'état et de navigation à l'aide des boutons
SYSTEM_UI_FLAG_LOW_PROFILE
, comme suit:
Kotlin
// This example uses decor view, but you can use any visible view. activity?.window?.decorView?.apply { systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE }
Java
// This example uses decor view, but you can use any visible view. View decorView = getActivity().getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE; decorView.setSystemUiVisibility(uiOptions);
Dès que l'utilisateur appuie sur la barre d'état ou de navigation, l'indicateur est effacé. ce qui entraîne l'assombrissement des barres. Une fois l'indicateur effacé, votre application doit être réinitialisée pour atténuer de nouveau la luminosité.
La figure 1 présente une image de galerie dans laquelle la barre de navigation est grisée (notez que l'application Galerie masque complètement la barre d'état ; elle ne l'assombrit pas). Notez que la barre de navigation (à droite de l'image) comporte de légers points blancs représentant les commandes de navigation:
La figure 2 montre la même image de galerie, mais avec les barres système affichées:
Afficher les barres d'état et de navigation
Si vous souhaitez effacer par programmation des indicateurs définis avec
setSystemUiVisibility()
, vous pouvez le faire
comme suit:
Kotlin
activity?.window?.decorView?.apply { // Calling setSystemUiVisibility() with a value of 0 clears // all flags. systemUiVisibility = 0 }
Java
View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0);