Android
DayNight-Theme (AppCompat v23.2 / API 14+)
Suche…
Hinzufügen des DayNight-Designs zu einer App
Das DayNight-Design gibt einer App die coole Möglichkeit, Farbschemen basierend auf der Tageszeit und dem letzten bekannten Standort des Geräts zu wechseln.
Fügen Sie Ihrer styles.xml
Folgendes 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>
Die Themen, die Sie erweitern können, um die Funktionalität zum Wechseln des Tags bei Nacht hinzuzufügen, sind die folgenden:
-
"Theme.AppCompat.DayNight"
-
"Theme.AppCompat.DayNight.NoActionBar"
-
"Theme.AppCompat.DayNight.DarkActionBar"
Neben colorPrimary
, colorPrimaryDark
und colorAccent
können Sie auch andere Farben hinzufügen, die Sie textColorPrimary
textColorSecondary
, z. B. textColorPrimary
oder textColorSecondary
. Sie können diesem style
auch die benutzerdefinierten Farben Ihrer App hinzufügen.
Damit das Theme funktionieren kann, müssen Sie eine Standardfarbe colors.xml
im Verzeichnis res/values
und eine andere colors.xml
im colors.xml
res/values-night
definieren und die Farben für Tag und Nacht entsprechend definieren.
Rufen Sie zum AppCompatDelegate.setDefaultNightMode(int)
des AppCompatDelegate.setDefaultNightMode(int)
die AppCompatDelegate.setDefaultNightMode(int)
-Methode in Ihrem Java-Code auf. (Dadurch wird das Farbschema für die gesamte App geändert, nicht nur für eine Aktivität oder ein Fragment.) Zum Beispiel:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Sie können je nach Wahl eine der folgenden drei Optionen passieren:
-
AppCompatDelegate.MODE_NIGHT_NO
:AppCompatDelegate.MODE_NIGHT_NO
das Standarddesign für Ihre App festgelegt und die im Verzeichnisres/values
definierten Farben übernommen. Es wird empfohlen, helle Farben für dieses Thema zu verwenden. -
AppCompatDelegate.MODE_NIGHT_YES
:AppCompatDelegate.MODE_NIGHT_YES
einAppCompatDelegate.MODE_NIGHT_YES
für Ihre App festgelegt und die im Verzeichnisres/values-night
definierten Farben übernommen. Es wird empfohlen, dunkle Farben für dieses Thema zu verwenden. -
AppCompatDelegate.MODE_NIGHT_AUTO
: DieseAppCompatDelegate.MODE_NIGHT_AUTO
automatisch die Farben der App basierend auf der Tageszeit und den Farben, die Sie invalues
undvalues-night
.
Es ist auch möglich, den aktuellen Nachtmodus mithilfe der getDefaultNightMode()
-Methode getDefaultNightMode()
. Zum Beispiel:
int modeType = AppCompatDelegate.getDefaultNightMode();
Beachten Sie jedoch, dass der Themenwechsel nicht bestehen bleibt, wenn Sie die App beenden und erneut öffnen. Wenn Sie das tun, wechselt das AppCompatDelegate.MODE_NIGHT_AUTO
wieder zu AppCompatDelegate.MODE_NIGHT_AUTO
, dem Standardwert. Wenn Sie möchten, dass der Design-Schalter bestehen bleibt, müssen Sie den Wert in den gemeinsamen Einstellungen speichern und den gespeicherten Wert jedes Mal laden, wenn die App nach der Zerstörung geöffnet wird.