Android java — Реализация темного режима

#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 код переопределения, будет ли ваше приложение следовать системным настройкам и правильно отображать цвета как для светлых, так и для темных тем?