Кто устанавливает 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, у некоторых устройств есть встроенный менеджер тем, а у других совсем нет возможности их создания, поэтому пока нет универсальных функций создания тем.