Android
Motyw DayNight (AppCompat v23.2 / API 14+)
Szukaj…
Dodawanie motywu DayNight do aplikacji
Motyw DayNight daje aplikacji fajną możliwość przełączania schematów kolorów na podstawie pory dnia i ostatniej znanej lokalizacji urządzenia.
Dodaj następujące elementy do 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>
Motywy, które możesz rozszerzyć, aby dodać możliwość przełączania motywów dnia i nocy, są następujące:
-
"Theme.AppCompat.DayNight" -
"Theme.AppCompat.DayNight.NoActionBar" -
"Theme.AppCompat.DayNight.DarkActionBar"
Oprócz colorPrimary , colorPrimaryDark i colorAccent możesz także dodać dowolne inne kolory, które chcesz zmienić, np. textColorPrimary lub textColorSecondary . Możesz również dodać niestandardowe kolory aplikacji do tego style .
Aby przełączanie motywów działało, musisz zdefiniować domyślny colors.xml w katalogu res/values i inny colors.xml w katalogu res/values-night oraz odpowiednio zdefiniować kolory dnia / nocy.
Aby przełączyć motyw, wywołaj AppCompatDelegate.setDefaultNightMode(int) z kodu Java. (Spowoduje to zmianę schematu kolorów całej aplikacji, a nie tylko jednego działania lub fragmentu.) Na przykład:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Możesz przekazać dowolne z następujących trzech zgodnie z własnym wyborem:
-
AppCompatDelegate.MODE_NIGHT_NO: ustawia domyślny motyw aplikacji i przyjmuje kolory zdefiniowane w katalogures/values. W tym temacie zaleca się stosowanie jasnych kolorów. -
AppCompatDelegate.MODE_NIGHT_YES: ustawia motyw nocny dla Twojej aplikacji i przyjmuje kolory zdefiniowane w katalogures/values-night. W tym temacie zaleca się stosowanie ciemnych kolorów. -
AppCompatDelegate.MODE_NIGHT_AUTO: to auto przełącza kolory aplikacji na podstawie pory dnia i kolorów zdefiniowanych wvaluesi katalogachvalues-night.
Możliwe jest również uzyskanie bieżącego stanu trybu nocnego za pomocą metody getDefaultNightMode() . Na przykład:
int modeType = AppCompatDelegate.getDefaultNightMode();
Pamiętaj jednak, że zmiana motywu nie utrzyma się, jeśli zabijesz aplikację i otworzysz ją ponownie. Jeśli to zrobisz, motyw wróci do AppCompatDelegate.MODE_NIGHT_AUTO , co jest wartością domyślną. Jeśli chcesz, aby przełącznik motywu trwał, upewnij się, że przechowujesz wartość we wspólnych preferencjach i ładujesz zapisaną wartość za każdym razem, gdy aplikacja jest otwierana po jej zniszczeniu.