Поиск…


Добавление темы DayNight в приложение

Тема DayNight дает приложению прекрасную возможность переключения цветовых схем на основе времени суток и последнего известного местоположения устройства.

Добавьте в свой 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>

Темы, которые вы можете продлить, чтобы добавить функцию переключения тем дня ночью, следующие:

  • "Theme.AppCompat.DayNight"
  • "Theme.AppCompat.DayNight.NoActionBar"
  • "Theme.AppCompat.DayNight.DarkActionBar"

Помимо colorPrimary , colorPrimaryDark и colorAccent вы также можете добавить любые другие цвета, которые вы хотели бы переключить, например textColorPrimary или textColorSecondary . Вы можете добавить пользовательские цвета вашего приложения в этот style .

Для переключения темы на работу вам необходимо определить значение по умолчанию colors.xml в colors.xml res/values и еще один colors.xml в colors.xml res/values-night и определить цвета день / ночь соответствующим образом.

Чтобы переключить тему, вызовите метод AppCompatDelegate.setDefaultNightMode(int) из вашего кода Java. (Это изменит цветовую схему для всего приложения, а не только одну активность или фрагмент.) Например:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

Вы можете передать любой из следующих трех по вашему выбору:

  • AppCompatDelegate.MODE_NIGHT_NO : это задает тему по умолчанию для вашего приложения и принимает цвета, определенные в каталоге res/values . Для этой темы рекомендуется использовать светлые цвета.
  • AppCompatDelegate.MODE_NIGHT_YES : это устанавливает ночную тему для вашего приложения и принимает цвета, определенные в каталоге res/values-night . Для этой темы рекомендуется использовать темные цвета.
  • AppCompatDelegate.MODE_NIGHT_AUTO : этот параметр автоматически переключает цвета приложения в зависимости от времени суток и цветов, которые вы определили в каталогах values и values-night .

Также можно получить текущий статус ночного режима с помощью метода getDefaultNightMode() . Например:

int modeType = AppCompatDelegate.getDefaultNightMode();

Обратите внимание, однако, что переключатель темы не будет сохраняться, если вы убьете приложение и снова его закроете. Если вы это сделаете, тема вернется к AppCompatDelegate.MODE_NIGHT_AUTO , который является значением по умолчанию. Если вы хотите, чтобы переключатель темы сохранялся, убедитесь, что вы сохраняете значение в общих настройках и загружаете сохраненное значение каждый раз, когда приложение открывается после его уничтожения.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow