Android
DayNight-thema (AppCompat v23.2 / API 14+)
Zoeken…
Het thema DayNight toevoegen aan een app
Het thema DayNight geeft een app de coole mogelijkheid om van kleurenschema te wisselen op basis van het tijdstip van de dag en de laatst bekende locatie van het apparaat.
Voeg het volgende toe aan uw 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>
De thema's die u kunt uitbreiden om dag / nacht thema-omschakelingsmogelijkheden toe te voegen zijn de volgende:
-
"Theme.AppCompat.DayNight"
-
"Theme.AppCompat.DayNight.NoActionBar"
-
"Theme.AppCompat.DayNight.DarkActionBar"
Afgezien van colorPrimary
, colorPrimaryDark
en colorAccent
, kunt u ook andere kleuren toevoegen die u wilt wijzigen, bijvoorbeeld textColorPrimary
of textColorSecondary
. U kunt ook de aangepaste kleuren van uw app aan deze style
.
Om van thema te wisselen, moet u een standaard colors.xml
in de map res/values
en een andere colors.xml
in de map res/values-night
definiëren en de juiste dag / nachtkleuren definiëren.
Als u van thema wilt veranderen, roept u de methode AppCompatDelegate.setDefaultNightMode(int)
vanuit uw Java-code. (Dit verandert het kleurenschema voor de hele app, niet alleen voor een activiteit of fragment.) Bijvoorbeeld:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Je kunt elk van de volgende drie passeren, afhankelijk van je keuze:
-
AppCompatDelegate.MODE_NIGHT_NO
: hiermee wordt het standaardthema voor uw app ingesteld en worden de kleuren gebruikt die zijn gedefinieerd in de mapres/values
. Het wordt aanbevolen om lichte kleuren voor dit thema te gebruiken. -
AppCompatDelegate.MODE_NIGHT_YES
: hiermee wordt eenAppCompatDelegate.MODE_NIGHT_YES
voor uw app ingesteld en worden de kleuren gebruikt die zijn gedefinieerd in de mapres/values-night
. Het wordt aanbevolen om donkere kleuren voor dit thema te gebruiken. -
AppCompatDelegate.MODE_NIGHT_AUTO
: deze schakelt automatisch de kleuren van de app op basis van het tijdstip van de dag en de kleuren die u hebt gedefinieerd invalues
envalues-night
mappen.
Het is ook mogelijk om de huidige nachtmodusstatus te verkrijgen met de methode getDefaultNightMode()
. Bijvoorbeeld:
int modeType = AppCompatDelegate.getDefaultNightMode();
Houd er echter rekening mee dat de themaknop niet blijft bestaan als u de app doodt en opnieuw opent. Als u dat doet, schakelt het thema terug naar AppCompatDelegate.MODE_NIGHT_AUTO
, wat de standaardwaarde is. Als je wilt dat de themaknop blijft bestaan, zorg er dan voor dat je de waarde opslaat in gedeelde voorkeuren en de opgeslagen waarde laadt telkens wanneer de app wordt geopend nadat deze is vernietigd.