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 map res/values . Het wordt aanbevolen om lichte kleuren voor dit thema te gebruiken.
  • AppCompatDelegate.MODE_NIGHT_YES : hiermee wordt een AppCompatDelegate.MODE_NIGHT_YES voor uw app ingesteld en worden de kleuren gebruikt die zijn gedefinieerd in de map res/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 in values en values-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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow