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 Verzeichnis res/values definierten Farben übernommen. Es wird empfohlen, helle Farben für dieses Thema zu verwenden.
  • AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_YES ein AppCompatDelegate.MODE_NIGHT_YES für Ihre App festgelegt und die im Verzeichnis res/values-night definierten Farben übernommen. Es wird empfohlen, dunkle Farben für dieses Thema zu verwenden.
  • AppCompatDelegate.MODE_NIGHT_AUTO : Diese AppCompatDelegate.MODE_NIGHT_AUTO automatisch die Farben der App basierend auf der Tageszeit und den Farben, die Sie in values und values-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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow