Есть ли способ использовать ночные ресурсы в старых Android?
Я хочу реализовать ночной режим для своего приложения, но не хочу использовать какие-либо библиотеки Compat. Я помещаю ресурсы в папку values-night и использую следующий код:
UiModeManager systemService = (UiModeManager) this.getSystemService(UI_MODE_SERVICE);
systemService.setNightMode(UiModeManager.MODE_NIGHT_YES);
Согласно документации это работает на API >22, и это делает. Есть ли обходной путь для принудительного использования ресурсов из папки -night в API 15-22?
2 ответа
Поддерживается библиотекой AppCompat. Я понятия не имею, почему ты не хочешь использовать это. Я цитирую из блога Криса Бэйна
Как вы, возможно, видели в блоге Support Lib 23.2.0, у AppCompat теперь есть новое семейство тем: Theme.AppCompat.DayNight.
Эти темы делают переключение между Theme.AppCompat (темный) и Theme.AppCompat.Light (светлый) в зависимости от времени суток. Это имеет много преимуществ для ваших пользователей, особенно если вы контент-приложение (кажется, оно стало стандартной функцией в клиентах Reddit). Следует отметить, что эта функция на самом деле действует только при работе на устройстве API v14 и более поздних версий, на устройствах до этого она по умолчанию будет использовать светлую тему.
Из документации дляUiModeManager.setNightMode()
:
Примечание. В API 22 и ниже изменения в ночной режим вступают в силу только тогда, когда
car
или жеdesk
режим включен на устройстве. Начиная с API 23, изменения в ночной режим всегда эффективны.
Возможно, вы можете использовать один из этих режимов пользовательского интерфейса?