Réduire la luminosité des barres système

Cette leçon explique comment assombrir les barres système (c'est-à-dire les barres d'état et de navigation) sur Android 4.0 (niveau d'API 14) ou version ultérieure. Android ne fournit pas de moyen intégré de réduire la luminosité des barres système dans les versions antérieures.

Lorsque vous utilisez cette approche, le contenu n'est pas redimensionné, mais les icônes des barres système disparaissent visuellement. Dès que l'utilisateur appuie sur la barre d'état ou la barre de navigation de l'écran, les deux barres deviennent entièrement visibles. L'avantage de cette approche est que les barres sont toujours présentes, mais que leurs détails sont dissimulés, créant ainsi une expérience immersive sans sacrifier la facilité d'accès 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 de l'indicateur 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 la diminution de la luminosité des barres. Une fois l'indicateur effacé, votre application doit le réinitialiser si vous souhaitez réduire à nouveau la luminosité des barres.

La figure 1 illustre 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 s'assombrit pas). Notez que la barre de navigation (à droite de l'image) comporte de faibles points blancs pour représenter les commandes de navigation:

barres système

Figure 1 : Barres système grisées.

La figure 2 illustre la même image de galerie, mais les barres système sont affichées:

barres système

Figure 2. Barres système visibles.

Afficher les barres d'état et de navigation

Si vous souhaitez programmer la suppression des indicateurs définis avec setSystemUiVisibility(), procédez 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);