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 katalogu res/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 katalogu res/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 w values i katalogach values-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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow