OpenHarmony开发者论坛
标题:
OpenHarmony如何开发深色模式界面?
[打印本页]
作者:
写代码不是有手就行
时间:
2023-10-31 00:43
标题:
OpenHarmony如何开发深色模式界面?
[md]# 开发环境
Devco Studio:4.0 Beta1(4.0.0.201)
API 9
# 问题描述
我想开发一个界面可以适配浅色、深色两种模式,我希望:
1.可以在用户切换模式时自动变化
2.在ArkUI的开发中可以 **避免** 使用if语句判断当前主题,从而差异化的指定各个控件或字体的颜色。
而是希望能够类似于安卓一样事先准备好两套主题所需的资源,但是代码中使用相同的资源名称,让系统自动根据当前主题,去使用各自的资源渲染界面。
这是否可以做到?
3.RK3568开发板(API 9),没有深色模式的开关,是否有可以用于开发调试深色模式的办法
4.问题2的具体例子:如下图所示,我在studio中添加了两个图片,一个是白色一个是黑色。
**该怎样做才能在UI中自动根据当前模式使用对应图片呢?**(除了设立标志位,并使用if判断这个方法)
在与base同级目录下创建的这个dark文件夹有用吗?
如果将白色图片的名称改为和深色一样,会有警告,是否可以将两个图片的名称改为一样的?
![image.png](data/attachment/forum/202310/31/003420nl2oxlsb04gskpbf.png "image.png")
5.@ohos.application.Configuration
(Configuration)中的colorMode字段,是否可以在ArkUI的代码中获取并监听其变化?
[/md]
作者:
mean
时间:
2023-10-31 14:36
标题:
OpenHarmony如何开发深色模式界面?
官网看到一个类似的示例
应用主题切换
。
通过创建 base 同级资源文件夹 dark 和 light 完成深色浅色主题相关资源配置,实现深色浅色主题切换,在 ThemeConst 文件中配置自定义主题文件,通过控制变量实现多主题切换。
----应该
可以解决第1、2个问题。
通过
@ohos.application.abilityManager
能力,对Ability状态进行修改:其中AbilityManager.updateConfiguration()通过修改colorMode属性来更新配置系统主题颜色。
----应该
可以解决第3个问题。
作者:
写代码不是有手就行
时间:
2023-10-31 16:38
回复
mean
: 我看了一下您给出的“应用主题切换”链接中的代码,以界面Tab导航栏底部图标为例:在light和dark文件中均有对应的同名文件nav_home,但在代码中(ThemeConst中的DefaultTheme)引用资源时使用的是static NAV_HOME = $r('app.media.nav_home')。那么系统如何知道该加载哪个文件呢?
代码中的主题切换是在自定义主题和默认主题中切换,但默认主题中并没有区分深色和浅色。
目前对您给出代码中的实现原理并没有完全理解,是否可以详细说明一下?
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5