Android
DayNight Theme (AppCompat v23.2 / API 14+)
Sök…
Lägga till DayNight-temat i en app
DayNight-temat ger en app den coola möjligheten att byta färgscheman baserat på tid på dagen och enhetens senaste kända plats.
Lägg till följande i dina 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>
Teman som du kan utöka från för att lägga till förmågan att växla tema för natt natt är följande:
-
"Theme.AppCompat.DayNight" -
"Theme.AppCompat.DayNight.NoActionBar" -
"Theme.AppCompat.DayNight.DarkActionBar"
Bortsett från colorPrimary , colorPrimaryDark och colorAccent kan du också lägga till alla andra färger som du vill byta, t.ex. textColorPrimary eller textColorSecondary . Du kan också lägga till appens anpassade färger till den här style .
För att byta tema till arbete måste du definiera en standardfärger.xml i colors.xml res/values och en annan colors.xml i colors.xml res/values-night och definiera dag / nattfärger på lämpligt sätt.
För att byta tema, ring AppCompatDelegate.setDefaultNightMode(int) -metoden från din Java-kod. (Detta kommer att ändra färgschemat för hela appen, inte bara någon aktivitet eller fragment.) Till exempel:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Du kan passera något av följande tre enligt ditt val:
-
AppCompatDelegate.MODE_NIGHT_NO: detta ställer in standardtemat för din app och tar färgerna som definieras ires/valueskatalogen. Det rekommenderas att använda ljusa färger för detta tema. -
AppCompatDelegate.MODE_NIGHT_YES: detta ställer in ett natttema för din app och tar färgerna som definieras ires/values-nightkatalogen. Det rekommenderas att använda mörka färger för detta tema. -
AppCompatDelegate.MODE_NIGHT_AUTO: den här auto växlar appens färger baserat på tid på dagen och de färger du har definierat i kataloger förvaluesochvalues-night.
Det är också möjligt att få aktuell nattläge med getDefaultNightMode() . Till exempel:
int modeType = AppCompatDelegate.getDefaultNightMode();
Observera dock att temaomkopplaren inte kommer att kvarstå om du dödar appen och öppnar den igen. Om du gör det kommer temat att växla tillbaka till AppCompatDelegate.MODE_NIGHT_AUTO , som är standardvärdet. Om du vill att temaomkopplaren ska bestå, se till att du lagrar värdet i delade preferenser och laddar det lagrade värdet varje gång appen öppnas efter att den har förstörts.