HarmonyOS APP应用主题切换

介绍

本示例展示多种应用主题切换。通过创建 base 同级资源文件夹 dark 和 light 完成深色浅色主题相关资源配置,实现深色浅色主题切换,在 ThemeConst 文件中配置自定义主题文件,通过控制变量实现多主题切换。

通过 @ohos.application.abilityManager 能力,对Ability状态进行修改:其中AbilityManager.updateConfiguration()通过修改colorMode属性来更新配置系统主题颜色。

效果预览

使用说明:

  1. 点击头部切换主题按钮,选择想要切换的主题。
  2. 系统深浅模式切换,应用主题自动跟随切换深浅模式。

工程目录

entry/src/main/ets/
|---models
|   |---ThemeConst.ets                  // 统一放置更换的主题资源
|---utils
|   |---ThemeGet.ets                    // 根据全局变量theme来控制主题模式
|---pages
|   |---Components
|        |---TitleBar.ets               // 头部导航栏,主题切换的控制
|   |---Index.ets                       // 首页
entry/src/main/resources/
|---base                                // 默认资源库
|   |---element                         // 字体相关资源
|   |---media                           // 图片资源
|   |---profile                        
|---dark                                // 黑夜模式资源
|   |---element                         
|   |---media                           
|---light                               // 白天模式资源
|   |---element                         
|   |---media                           

具体实现

  • 三种模式资源统一放在ThemeConst内,在ThemeGet中定义全局变量theme控制主题模式(0:黑夜 1:白天 3:自定义主题),步骤如下,
  • 1)整理主题资源:例如创建系统主题dark,light和自定义主题custom相关目录,并完善需要切换的资源比如icon、color等,系统主题下的相同资源,资源名称必须相同,比如dark下title.icon和light下title.icon
  • 2)定义资源池函数引用需要切换的主题资源,需要主题切换的资源通过getTheme(this.theme).资源名,实现组件对资源的动态引用和动态渲染。
  • 3)定义全局变量@storagelink(‘theme’)
  • 4)定义事件修改变量theme的值,如果是系统主题(dark,light),调用AbilityManager.updateConfiguration(),通过修改colorMode属性来更新配置系统主题颜色(0:深夜 1:白天)
  • 5)自定义主题无须修改系统配置,只需修改theme全局变量的值,全局变量会通过@storagelink双向绑定机制,自动重新渲染绑定了theme值的组件

依赖

不涉及。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/Project/ApplicationHap/ApplicationThemeSwitch/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.1024c.cn/archives/21292,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?