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_NOdas Standarddesign für Ihre App festgelegt und die im Verzeichnisres/valuesdefinierten Farben übernommen. Es wird empfohlen, helle Farben für dieses Thema zu verwenden. -
AppCompatDelegate.MODE_NIGHT_YES:AppCompatDelegate.MODE_NIGHT_YESeinAppCompatDelegate.MODE_NIGHT_YESfür Ihre App festgelegt und die im Verzeichnisres/values-nightdefinierten Farben übernommen. Es wird empfohlen, dunkle Farben für dieses Thema zu verwenden. -
AppCompatDelegate.MODE_NIGHT_AUTO: DieseAppCompatDelegate.MODE_NIGHT_AUTOautomatisch die Farben der App basierend auf der Tageszeit und den Farben, die Sie invaluesundvalues-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.