Правильный способ реализации функции ночного режима

Я знаю с помощью AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); ночной режим может быть реализован в деятельности. Но я хочу, чтобы в настройках была опция активации ночного режима во всех действиях и фрагментах в приложении. Как я могу это сделать?

2 ответа

Решение

Один из способов добиться этого:

  • Когда вы выбираете ночной режим действия в настройках активности (или любой другой), вы можете поддерживать флаг (и сохранять в общих настройках или в любом временном хранилище).

  • Проверьте этот флаг на каждом действии и фрагменте, и если флаг положительный, установите ночной режим, как вы использовали,

    AppCompatDelegate.setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES);

Вы можете использовать NightModeHelper для этого, просто добавьте следующую строку в верхней части вашей деятельности onCreate сразу после super.onCreate(); Идея в том, чтобы сделать это, прежде чем мы создадим какие-либо представления. Таким образом, новые представления будут использовать правильную конфигурацию.

mNightModeHelper = new NightModeHelper(this, R.style.AppTheme);

Смотрите демо здесь https://github.com/zouliping/AndroidNightMode

Другие вопросы по тегам