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/values
katalogen. 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-night
katalogen. 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örvalues
ochvalues-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.