Android
Thème DayNight (AppCompat v23.2 / API 14+)
Recherche…
Ajout du thème DayNight à une application
Le thème DayNight permet à une application de changer de schéma de couleurs en fonction de l'heure et du dernier emplacement connu de l'appareil.
Ajoutez ce qui suit à votre styles.xml
:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Les thèmes à partir desquels vous pouvez ajouter une fonctionnalité de changement de thème de nuit sont les suivants:
-
"Theme.AppCompat.DayNight"
-
"Theme.AppCompat.DayNight.NoActionBar"
-
"Theme.AppCompat.DayNight.DarkActionBar"
Outre colorPrimary
, colorPrimaryDark
et colorAccent
, vous pouvez également ajouter d'autres couleurs que vous souhaitez changer, par exemple textColorPrimary
ou textColorSecondary
. Vous pouvez également ajouter les couleurs personnalisées de votre application à ce style
.
Pour que le changement de thème fonctionne, vous devez définir un colors.xml
par défaut dans le répertoire res/values
et un colors.xml
dans le colors.xml
res/values-night
et définir les couleurs jour / nuit de manière appropriée.
Pour changer de thème, appelez la AppCompatDelegate.setDefaultNightMode(int)
partir de votre code Java. (Cela changera la palette de couleurs pour l’application entière, et pas seulement pour une activité ou un fragment.) Par exemple:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Vous pouvez passer l'un des trois suivants selon votre choix:
-
AppCompatDelegate.MODE_NIGHT_NO
: cela définit le thème par défaut pour votre application et prend les couleurs définies dans le répertoireres/values
. Il est recommandé d'utiliser des couleurs claires pour ce thème. -
AppCompatDelegate.MODE_NIGHT_YES
: définit un thème de nuit pour votre application et prend les couleurs définies dans le répertoireres/values-night
. Il est recommandé d'utiliser des couleurs sombres pour ce thème. -
AppCompatDelegate.MODE_NIGHT_AUTO
: cetteAppCompatDelegate.MODE_NIGHT_AUTO
change automatiquement les couleurs de l'application en fonction de l'heure du jour et des couleurs que vous avez définies dansvalues-night
répertoires devalues
et devalues-night
.
Il est également possible d’obtenir le statut actuel du mode nuit à l’aide de la méthode getDefaultNightMode()
. Par exemple:
int modeType = AppCompatDelegate.getDefaultNightMode();
Veuillez noter, cependant, que le changement de thème ne persistera pas si vous tuez l'application et la rouvrez. Si vous faites cela, le thème reviendra à AppCompatDelegate.MODE_NIGHT_AUTO
, qui est la valeur par défaut. Si vous souhaitez que le changement de thème persiste, assurez-vous de stocker la valeur dans les préférences partagées et de charger la valeur stockée à chaque ouverture de l'application après sa destruction.