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

Я сделал простую заметку 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 и виджет панели Google. Он переключается после активации ночного режима Android. Кто-нибудь знает, как это сделать?


person Jordan    schedule 14.01.2017    source источник
comment
попробуйте взглянуть на этот один   -  person omini data    schedule 14.01.2017
comment
Смена дневного ночного режима для моей деятельности - это нормально. Это обновление виджета на моем рабочем столе, чтобы перейти от красного к черному, вот в чем проблема. Я не знаю, как указать виджету обновлять его самостоятельно, когда наступит ночь или день   -  person Jordan    schedule 14.01.2017
comment
вы создали цветной xml и класс общедоступного стиля?   -  person omini data    schedule 15.01.2017


Ответы (1)


Я заставил его работать и многое использовал из того, что делали вы. Моя демонстрация показывает, как тема день-ночь работает с виджетами. :) Возникла проблема, приложение должно быть запущено, чтобы определить, какой режим включен. Но если речь идет о том, чтобы не работать автоматически, тогда работает все время https://github.com/juanmendez/android-styling-recipes/tree/02.dayNightTheme+Widget

Это половина ответа. Это полный ответ на него. Я написал библиотеку при использовании с приложением, тогда для этого требуются определенные зависимости, которые вам нужно включить. Затем он использует ваши зависимости и позволяет вашему WidgetProvider обновлять виджеты до дневной или ночной темы. https://github.com/juanmendez/LightThemeScheduler

person Juan Mendez    schedule 17.10.2017