как настройка AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM связана с результатом getResources (). getConfiguration (). uiMode - PullRequest
0 голосов
/ 05 февраля 2020

при использовании

getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK

для проверки того, в каком режиме находится приложение,

int currentNightMode = getResources().getConfiguration().uiMode
        & Configuration.UI_MODE_NIGHT_MASK
switch (currentNightMode) {
    case Configuration.UI_MODE_NIGHT_NO:
        // Night mode is not active, we're in day time
    case Configuration.UI_MODE_NIGHT_YES:
        // Night mode is active, we're at night!
    case Configuration.UI_MODE_NIGHT_UNDEFINED:
        // We don't know what mode we're in, assume notnight
}

, если вызывается с AppCompatDelegate.MODE_NIGHT_YES ранее

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

Возвращает ли currentNightMode значение Configuration.UI_MODE_NIGHT_YES?

, что будет, если значение AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM было установлено до

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);

, и устройство изменило их с светлого на темное (или от темного к светлому)?

1 Ответ

0 голосов
/ 06 февраля 2020
context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES

сообщает текущему режиму, в котором будет работать приложение.

при

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)

, если изменить системную тему в настройках (в Android Q), то configuration.uiMode будет отражать изменение.

то же самое с

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
or
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)

примечание: изменение configuration.uiMode вызовет изменение конфигурации и может вызвать воссоздание действия.

...