在通知区域切换中收听“深色主题”并收到更改通知

2024-04-07

我可以得到UI_MODE_NIGHT_MASK通过致电resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK.

我需要监听这个变量并在接收新值时更改我的主题。

我想我可以添加一个BroadcastReceiver所以我可以做一个getSystemService(A_CONSTANT_FROM_Context)并注册一个类似的主题回调ConnectivityManager.NetworkCallback。但我只在文档中找到这些:Theme.MaterialComponents.DayNight关于我的主题风格和values-night。问题深色主题配置 https://stackoverflow.com/questions/57955769/dark-theme-configuration-change-in-android-q已经有一个被接受的答案引用了这个文档。


欲了解有关uiMode更改添加configChanges属性在你的AndroidManifest.xml:

<application
    ...>
    <activity
        android:name=".YourActivity"
        ...
        android:configChanges="uiMode"/>
</application>

然后在您的活动中监听配置更改:

public class YourActivity extends AppCompatActivity {

    protected Configuration mPrevConfig;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        mPrevConfig = new Configuration(getResources().getConfiguration());
    }

    @Override
    public void onConfigurationChanged(@NonNull Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        configurationChanged(newConfig);
        mPrevConfig = new Configuration(newConfig);
    }

    protected void configurationChanged(Configuration newConfig) {
        if (isNightConfigChanged(newConfig)) { // night mode has changed
            recreate();
            // do your thing
        }
    }

    protected boolean isNightConfigChanged(Configuration newConfig) {
        return (newConfig.diff(mPrevConfig) & ActivityInfo.CONFIG_UI_MODE) != 0 && isOnDarkMode(newConfig) != isOnDarkMode(mPrevConfig);
    }
    public static boolean isOnDarkMode(Configuration configuration) {
        return (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在通知区域切换中收听“深色主题”并收到更改通知 的相关文章

随机推荐

  • 强制WKWebView显示移动版本

    我试图强制 WKWebView 显示移动版本 我在不同的应用程序版本中得到不一致的结果 但是 Safari 总是正确播种移动设备 我尝试设置 userAgent 似乎没有任何影响视图 实际上 我发现正确的解决方案是在启动应用程序时清除缓存
  • PHP正则表达式的逻辑运算符AND

    我想在正则表达式中使用一种逻辑运算符 AND 我试过这个 exp1 exp2 但在 PHP 中 不起作用 需要用 PHP 语言编写我的程序 还有其他方法吗 如果所有条件以任意顺序存在 则表达式必须匹配 我不想把每个排列都写成 exp1 ex
  • 如何在 jQuery 中创建链式延迟动画序列?

    考虑拥有以下对象 div span This is div1 span div div span This is div2 span div div span This is div3 span div div span This is d
  • 如何在 v-select 或 v-combobox 上有“全选”选项?

    我们如何有一个全选选项来选择一个中的所有内容v select or a v combobox Vuetify 没有Select all选项v select 但是 您可以使用按钮和方法自己完成 像这样 JS methods selectAll
  • 将 STDIN 拆分为多个文件(如果可能的话压缩它们)

    我有一个程序 gawk 将数据流输出到它的STDOUT 处理的数据实际上有 10 GB 我不想将其保留在单个文件中 而是将其分成多个块 并可能在保存之前对每个文件应用一些额外的处理 如压缩 我的数据是一系列记录 我不想拆分将记录减半 每条记
  • 查找最小值之前的每列值的最大值

    考虑数组a a np array 5 4 4 5 2 2 6 1 3 7 我可以找到最小值在哪里 a argmin 0 array 2 3 如何找到索引 2 之前第 0 列值的最大值 第 1 列和索引 3 也是如此 更重要的是 它们在哪里
  • 为什么RecyclerView.OnScrollListener不是接口而是抽象类?

    实现无尽滚动模式RecyclerView我想创建一个像 public class EndlessScrollAdapter
  • Xamarin 和托管可扩展性框架 (MEF)

    我正在考虑一个新的移动 平板电脑应用程序 我想让用户开发自己的插件 想象一下在 Android 平板电脑上运行的收银台应用程序 连接到信用卡读卡器时 用户可以使用许多替代方案 Square https squareup com Sum Up
  • CSS 选择器获取 HTML 树中特定类的最深元素

    我的 HTML 中有一堆 DIV 元素 其中几个元素的 class 属性设置为 rowsLayout 其中一些 rowsLayout DIV 可以相互嵌套 我想定义一个 CSS 选择器 仅针对这些嵌套中最深的 DIV 也就是说 我don t
  • Android APK的静默安装

    我正在寻找一种方法来对我的应用程序进行编程以静默安装 APK 文件 我知道可以使用如下代码启动 Intent intent new Intent Intent ACTION VIEW intent setDataAndType Uri fr
  • Vuetify - 如何设置背景颜色

    我正在使用带有 Light 主题的 Vuetify 默认情况下 这会将主要内容的背景设置为浅灰色 我需要它是白色的 我想通过修改手写笔变量来覆盖它 但我似乎无法弄清楚哪个变量设置背景颜色 我按照中的所有步骤进行了操作docs https v
  • 如何使用 C# 语言将用户与机器人的对话数据存储到 azure SQL 数据库中?

    我目前正在研究 Bot 框架技术 在我当前的项目中 我想将 bot 对话数据存储到 azure SQL 数据库中 我开发了一个 ReviewBot 在其中我必须编写代码来按用户对任何酒店进行评论 评级 机器人与用户的通信工作正常 但我想使用
  • 使用 setInterval 时,如果我在 Chrome 中切换选项卡并返回,滑块会疯狂追赶

    我的网站上有一个 jQuery 滑块 转到下一张幻灯片的代码位于名为 nextImage 的函数中 我使用 setInterval 在计时器上运行我的函数 它完全符合我的要求 它在计时器上运行我的幻灯片 但是 如果我在 Chrome 中访问
  • 如何将 JavaScript 代码嵌入到 Google 协作平台页面中?

    我有一个 Google 协作平台页面 如何在其中嵌入 JavaScript 代码 而不实现小工具并在其中添加 JavaScript 代码 您可以运行一些 JavaScript 代码 但是在页面编辑期间 它将自动包装到一个简单的小工具中 并且
  • 阻止 Rails 表单标签修改文本

    我的一个视图中有下面的代码 但它始终呈现为主页 url 我怎样才能阻止它改变情况 br br 愚蠢 我知道 但这样就可以了 f label 之后的第一个参数实际上应该是正在编辑的对象的方法 所以您可能弄错了 我假设方法 字段名称 实际上是我
  • 通过拼凑对齐多个图例

    In 这个小插曲 https patchwork data imaginist com articles guides layout html controlling guides of 拼凑而成 https cran r project
  • 将 Json 响应解释为纯文本 [重复]

    这个问题在这里已经有答案了 我有以下代码 我需要解析响应 根据我的理解 该响应实际上保存在变量 transferFlag 中 但是 transferFlag 会提醒整个ajax代码 我需要 ajax 调用的响应 它实际上返回方法的值 get
  • 警告:找不到指定操作的配置:

    我遇到以下异常 请帮助解决这个问题 Jul 16 2013 11 18 40 AM org apache struts2 components Form evaluateExtraParamsServletRequest WARNING N
  • 如何将更新部署到在客户站点上运行的服务工作人员?

    假设我提供不同网站使用的推送通知服务 此服务需要在我的客户站点上安装 Service Worker 我希望该架构具有一些属性 完全静态资源 安装 Service Worker 文件 配置 JS 片段等过程只需完成一次 随时更新 Servic
  • 在通知区域切换中收听“深色主题”并收到更改通知

    我可以得到UI MODE NIGHT MASK通过致电resources configuration uiMode and Configuration UI MODE NIGHT MASK 我需要监听这个变量并在接收新值时更改我的主题 我想