积分14 / 贡献0

提问3答案被采纳0文章0

OpenHarmony如何开发深色模式界面?

写代码不是有手就行 显示全部楼层 发表于 2023-10-31 00:43:08

开发环境

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

5.@ohos.application.Configuration (Configuration)中的colorMode字段,是否可以在ArkUI的代码中获取并监听其变化?

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论2

mean

沙发 发表于 2023-10-31 14:36:49

OpenHarmony如何开发深色模式界面?

官网看到一个类似的示例应用主题切换

通过创建 base 同级资源文件夹 dark 和 light 完成深色浅色主题相关资源配置,实现深色浅色主题切换,在 ThemeConst 文件中配置自定义主题文件,通过控制变量实现多主题切换。----应该可以解决第1、2个问题。


通过@ohos.application.abilityManager 能力,对Ability状态进行修改:其中AbilityManager.updateConfiguration()通过修改colorMode属性来更新配置系统主题颜色。----应该可以解决第3个问题。

写代码不是有手就行

发表于 2023-10-31 16:38  IP属地: 运营商级NAT

回复 mean: 我看了一下您给出的“应用主题切换”链接中的代码,以界面Tab导航栏底部图标为例:在light和dark文件中均有对应的同名文件nav_home,但在代码中(ThemeConst中的DefaultTheme)引用资源时使用的是static NAV_HOME = $r('app.media.nav_home')。那么系统如何知道该加载哪个文件呢?
代码中的主题切换是在自定义主题和默认主题中切换,但默认主题中并没有区分深色和浅色。
目前对您给出代码中的实现原理并没有完全理解,是否可以详细说明一下?

【1 条回复】

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部