Cette section décrit comment prendre en charge le thème sombre (mode sombre) qui est entièrement pris en charge à partir d'Android 10 du côté de l'application.
res/values/styles.xml Tout d'abord, mettez à jour styles.xml, qui est également utilisé pour la personnalisation normale du thème, et définissez la couleur que vous souhaitez changer lorsque le mode sombre est activé / désactivé.
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorBackground">@color/colorBackground</item>
<item name="android:textColor">@color/textColor</item>
<item name="android:textColorPrimary">@color/textColorPrimary</item>
<item name="android:textColorSecondary">@color/textColorSecondary</item>
</style>
</resources>
Décrivez la définition de couleur référencée lorsque le mode sombre est activé dans les paramètres système dans res / values-night / colors.xml, et la couleur normale dans res / values / colors.xml.
<resources>
<color name="colorPrimary">#212121</color>
<color name="colorPrimaryDark">#212121</color>
<color name="colorAccent">#80cbc4</color>
<color name="colorTransparent">#00000000</color>
<color name="textColor">#FFFFFF</color>
<color name="textColorPrimary">#FFFFFF</color>
<color name="textColorSecondary">#808080</color>
<color name="colorBackground">#313131</color>
<color name="colorCardBackground">@color/colorPrimary</color>
<color name="colorBackgroundBottomAppBar">#353535</color>
</resources>
Si vous prenez en charge jusqu'à ce point, l'affichage changera selon les paramètres du système sans écrire de code.
Utilisez AppCompatDelegate.setDefaultNightMode pour appliquer à l'ensemble de l'application.
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES); //S'applique à l'ensemble de l'application
AppCompatDelegate.setLocalNightMode(MODE_NIGHT_YES); //S'applique uniquement à des activités spécifiques
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO); //S'applique à l'ensemble de l'application
AppCompatDelegate.setLocalNightMode(MODE_NIGHT_NO); //S'applique uniquement à des activités spécifiques
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); //S'applique à l'ensemble de l'application
AppCompatDelegate.setLocalNightMode(MODE_NIGHT_FOLLOW_SYSTEM); //S'applique uniquement à des activités spécifiques
Recommended Posts