Обновить виджет для ночного режима

Я сделал простую заметку 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

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