首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式检测Android设备是否处于黑暗模式?

如何以编程方式检测Android设备是否处于黑暗模式?
EN

Stack Overflow用户
提问于 2019-08-28 12:29:42
回答 3查看 7.4K关注 0票数 17

我正在尝试为我的Android应用程序支持Android Q Dark主题,但我不知道如何根据我当前所在的主题导入不同的资源。

我使用官方的DayNight主题来制作深色/浅色版本和绘图,只需指向XML,它将根据启用的值从值或值-夜中选择正确的值。

我想做一些类似的事情,根据主题,它将加载资产"priceTag_light.png“或"priceTag_dark.png”。

代码语言:javascript
运行
复制
val inputStream = if(darkIsEnabled) { 
                    assets.open("priceTag_dark.png")
                  } else {
                    assets.open("priceTag_light.png")
                  }

有没有办法让我拿到那面旗子?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-28 15:22:54

好了,我终于找到了我想要的解决方案。正如@deepak-s-gavkar指出的,为我们提供该信息的参数位于配置上。所以,经过小小的搜索,我找到了一篇this文章,它给出了这个示例方法,它完美地满足了我的需求:

代码语言:javascript
运行
复制
fun isDarkTheme(activity: Activity): Boolean {
        return activity.resources.configuration.uiMode and
                Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES
    }
票数 23
EN

Stack Overflow用户

发布于 2019-08-28 12:31:48

您首先需要在清单中执行此更改

代码语言:javascript
运行
复制
<activity
    android:name=".MyActivity"
    android:configChanges="uiMode" />

然后是活动的onConfigurationChanged

代码语言:javascript
运行
复制
val currentNightMode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
when (currentNightMode) {
    Configuration.UI_MODE_NIGHT_NO -> {} // Night mode is not active, we're using the light theme
    Configuration.UI_MODE_NIGHT_YES -> {} // Night mode is active, we're using dark theme
}
票数 5
EN

Stack Overflow用户

发布于 2021-03-07 00:24:18

使用以下代码:

代码语言:javascript
运行
复制
boolean isDarkThemeOn = (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)  == Configuration.UI_MODE_NIGHT_YES;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57685088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档