#android #darkmode
Вопрос:
Я пытаюсь реализовать темный режим для своего приложения. пока все в порядке, у пользователя есть возможность включить/выключить темный режим в настройках приложения.
Но когда система находится в темном режиме, а темный режим из настроек приложения отключен, происходит смешивание цветов, например, некоторые цвета загружаются из ночных ресурсов, а некоторые другие-из светлых ресурсов.
зная, что эта проблема возникает только для некоторых устройств, таких как Xiaomi note 9.
что я делаю: в классе приложения при создании сначала проверяет системный темный режим, если пользователь не изменил настройки приложения, затем заполняет значение в настройках приложения на основе системы, после этого, если пользователь снова запустит приложение, я загружаю значение из общих настроек
@Override
public void onCreate() {
PreferencesUtils preferencesUtils = new PreferencesUtils(this);
if (preferencesUtils.isDarkModeCheck() == null) { // on first install user didn't edit configuration
int nightModeFlags =
getResources().getConfiguration().uiMode amp; Configuration.UI_MODE_NIGHT_MASK;
boolean isNightMode = false;
switch (nightModeFlags) {
case Configuration.UI_MODE_NIGHT_YES:
isNightMode = true;
break;
}
if (isNightMode) {
preferencesUtils.setDarkMode(true);
} else {
preferencesUtils.setDarkMode(false);
}
}
if (preferencesUtils.isDarkMode()) {// after first install
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}
super.onCreate();
}
но для некоторых устройств, когда система темная, а настройки приложения светлые, происходит смешение цветов между ресурсами.
есть какие-нибудь полезные советы?
Комментарии:
1. Что вы используете для a
Context
при загрузке этих ресурсов?2. если вы полностью удалите (закомментируете) этот
Application
код переопределения, будет ли ваше приложение следовать системным настройкам и правильно отображать цвета как для светлых, так и для темных тем?