Как правильно переключатся на темную тему?
Мне в приложении надо переключатся на тёмную тему, делаю это так:
private fun onOffDarkTheme() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
when (requireActivity().resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
Configuration.UI_MODE_NIGHT_YES -> {
prefs!!.edit().putBoolean(MODE_NIGHT, false).apply()
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
startActivity(Intent(requireActivity(), MainActivity::class.java))
}
Configuration.UI_MODE_NIGHT_NO -> {
prefs!!.edit().putBoolean(MODE_NIGHT, true).apply()
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
startActivity(Intent(requireActivity(), MainActivity::class.java))
}
}
} else {
val uiModeManager: UiModeManager = requireActivity().getSystemService(UI_MODE_SERVICE) as UiModeManager
when (requireActivity().resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
Configuration.UI_MODE_NIGHT_YES -> {
prefs!!.edit().putBoolean(MODE_NIGHT, false).apply()
uiModeManager.nightMode = UiModeManager.MODE_NIGHT_NO
startActivity(Intent(requireActivity(), MainActivity::class.java))
}
Configuration.UI_MODE_NIGHT_NO -> {
prefs!!.edit().putBoolean(MODE_NIGHT, true).apply()
uiModeManager.nightMode = UiModeManager.MODE_NIGHT_YES
startActivity(Intent(requireActivity(), MainActivity::class.java))
}
}
}
}
И в Application, проверяю
private fun isDarkThemeOn() {
val uiModeManager: UiModeManager = this.getSystemService(UI_MODE_SERVICE) as UiModeManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if (prefs!!.getBoolean(Constants.MODE_NIGHT, false)) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
}
} else {
if (prefs!!.getBoolean(Constants.MODE_NIGHT, false)) {
uiModeManager.nightMode = UiModeManager.MODE_NIGHT_YES
} else {
uiModeManager.nightMode = UiModeManager.MODE_NIGHT_NO
}
}
}
Проблема в том что из папки raw-night не подтягиваются ресурсы(.mp4), остаются те же что и были но если переключаю через настройки, то всё работает правильно. Я так понимаю, что я путаю Dark Theme и Dark Mode, но не могу понять как поправить. Моя основная тема, наследуется от
parent="Theme.AppCompat.DayNight"