2

我在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 bar 小部件。一旦夜间模式被android激活,它就会切换。有人知道怎么做吗?

4

1 回答 1

0

我让它工作并使用了很多你正在做的事情。我的演示展示了在小部件上工作的昼夜主题。:) 有一个问题,应用程序必须正在运行才能确定处于何种模式。但如果它是关于不做自动然后一直工作https://github.com/juanmendez/android-styling-recipes/tree/02.dayNightTheme+Widget

这是一半的答案。这是一个完整的答案。我在与应用程序一起使用时编写了一个库,然后它需要您需要包含的某些依赖项。然后它利用您的依赖项并允许您的 WidgetProvider 将小部件更新为白天或夜晚的主题。https://github.com/juanmendez/LightThemeScheduler

于 2017-10-17T05:00:45.030 回答