Обновить виджет для ночного режима
Я сделал простую заметку Widget в Android. Я добавил функцию ночного режима, в которой цвет виджета будет меняться от красного днем до черного ночью. Я использовал этот код, чтобы приложение изменило виджет в зависимости от времени суток:
// Find Night Mode Automatically//
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);
// Checks Whether app Is In Night Mode Or Not//
int currentNightMode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
// Checks All Scenarios//
switch (currentNightMode) {
// Night Mode Is Not Active, We're In Day Time//
case Configuration.UI_MODE_NIGHT_NO: {
// Instantiate Variable RemoteViews remoteViews / Directs Activity To GUI//
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.note_widget_ui);
// Initiate viewText Method//
viewText(context, remoteViews);
// Kill Code//
break;
}
// Night Mode Is Active, We're At Night!//
case Configuration.UI_MODE_NIGHT_YES: {
// Instantiate Variable RemoteViews remoteViews / Directs Activity To GUI//
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.note_widget_night_ui);
// Initiate viewText Method//
viewText(context, remoteViews);
// Kill Code//
break;
}
// We Don't Know What Mode We're In, Assume Notnight//
case Configuration.UI_MODE_NIGHT_UNDEFINED: {
// Instantiate Variable RemoteViews remoteViews / Directs Activity To GUI//
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.note_widget_ui);
// Initiate viewText Method//
viewText(context, remoteViews);
// Kill Code//
break;
}
}
Как использовать этот код, чтобы заставить виджет обновлять свой цвет, как только включается ночной режим. Еще один пример этого - nova launcher и виджет панели Google. Он включается один раз, ночной режим активируется на Android. Кто-нибудь знает, как это сделать?
1 ответ
Я получил его на работу и использую многое из того, что вы делали. В моей демоверсии показана тема "день-ночь", работающая с виджетами.:) Проблема в том, что приложение должно быть запущено, чтобы определить, какой режим включен. Но если это не делать авто, то все время работает https://github.com/juanmendez/android-styling-recipes/tree/02.dayNightTheme+Widget
Это половина ответа. Это полный ответ на это. Я написал библиотеку при использовании с приложением, тогда она требует определенных зависимостей, которые вам нужно включить. Затем он использует ваши зависимости и позволяет вашему WidgetProvider обновлять виджеты до дневной или ночной темы. https://github.com/juanmendez/LightThemeScheduler