Кто устанавливает getDefaultNightMode()

Я хотел бы добавить тему Night/Day в свое приложение, и я прочитал много статей в Интернете, но я все еще не понимаю, кто устанавливает этот метод, это ОС Android или мне нужно создавать метод на основе по сезону и времени суток устанавливать setDefaultNightMode()?

1 ответ

Тема вашего приложения обрабатывается вами, операционная система и цвета SystemUI обрабатываются системой.

Чтобы изменить тему в вашем приложении, вы должны определить свой стиль в res/values/styles.xml как показано ниже, и вы должны применить его в коде активности (до setContentView() метод)

<style name="AppLight" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/appColorPrimaryLight</item>
    <item name="colorPrimaryDark">@color/appColorPrimaryDark</item>
    <item name="colorAccent">@color/appColorAccentLight</item>
</style>


<style name="AppDark" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/appColorPrimaryDark</item>
    <item name="colorPrimaryDark">@color/appColorPrimaryDark</item>
    <item name="colorAccent">@color/appColorAccentDark</item>
</style>

И в вашей основной деятельности

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Here goes the theme setup
    setTheme(R.style.AppDark)
    setContentView(R.layout.activity_main)
}

Очевидно, вы можете изменить алгоритм, чтобы применять светлую / темную тему, основываясь на логике вашего приложения. Об андроидной ночи больше реализации, у каждого OEM есть индивидуальная реализация операционной системы Android, у некоторых устройств есть встроенный менеджер тем, а у других совсем нет возможности их создания, поэтому пока нет универсальных функций создания тем.

Другие вопросы по тегам