Как получить уведомление об изменении Android системной темы? - PullRequest
0 голосов
/ 15 апреля 2020

Android введена Темная Тема в API уровня 29 и выше (https://developer.android.com/guide/topics/ui/look-and-feel/darktheme). Для поддержки Dark Theme в вашем приложении тема вашего приложения должна наследоваться от темы DayNight. Но что, если вы сделали свою тему, есть ли у Android намерение получить уведомление об изменении темы системы?

1 Ответ

1 голос
/ 15 апреля 2020

Если вы добавите android:configChanges="uiMode" к своим действиям в манифесте, когда пользователь меняет тему, вызывается метод onConfigurationChanged. Если вы переопределите это, вы можете выполнить всю связанную с этим работу. Чтобы проверить текущую тему, вы можете сделать следующее:

val currentNightMode = configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
when (currentNightMode) {
    Configuration.UI_MODE_NIGHT_NO -> {} // Night mode is not active, we're using the light theme
    Configuration.UI_MODE_NIGHT_YES -> {} // Night mode is active, we're using dark theme
}

( source )

...