Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HarmonyOS APP应用主题切换

HarmonyOS APP应用主题切换

原创
作者头像
小帅聊鸿蒙
发布于 2024-09-12 13:55:07
发布于 2024-09-12 13:55:07
1880
举报
文章被收录于专栏:鸿蒙开发笔记鸿蒙开发笔记

介绍

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

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

效果预览

使用说明:

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

工程目录

代码语言:shell
AI代码解释
复制
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值的组件

依赖

不涉及。

下载

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

代码语言:shell
AI代码解释
复制
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

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识;
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂鸿蒙开发;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flutter中的Material Theme完全指南:从入门到实战
Flutter作为一款热门的跨平台开发框架,其UI组件库Material Design深受开发者喜爱。本文将深入探讨Flutter Material Theme的使用,包括如何借助Material Theme Builder创建符合产品需求的主题风格。通过多个场景和代码实例,让你轻松掌握这一工具。
井九
2024/11/19
3280
Flutter中的Material Theme完全指南:从入门到实战
2025年最受欢迎的19 个VSCode 主题排行榜:推荐使用13号vs code主题
哈喽,各位亲爱的代码小伙伴,猫头虎来给你们带来一波干货分享咯!今天我们要聊的,是那些在2025年里,能让你的编程环境焕发新光的VS Code主题。是的,你没听错,就是那些让你的代码编辑器既好看又好用的小玩意儿。
猫头虎
2025/01/01
2.2K0
2025年最受欢迎的19 个VSCode 主题排行榜:推荐使用13号vs code主题
前端主题切换方案详解
现在我们经常可以看到一些网站会有类似暗黑模式/白天模式的主题切换功能,效果也是十分炫酷,在平时的开发场景中也有越来越多这样的需求,这里大致罗列一些常见的主题切换方案并分析其优劣,大家可根据需求综合分析得出一套适用的方案。
前端老道
2023/09/01
8760
前端主题切换方案详解
纯血鸿蒙APP实战开发——深色模式适配
本示例介绍在开发应用以适应深色模式时,对于深色和浅色模式的适配方案,采取了多种策略如下:
小帅聊鸿蒙
2024/12/30
1800
关于前端主题切换的思考和现代前端样式的解决方案落地
网站或者应用一键切换主题(简称:换肤)功能,对每个前端开发者来说已经非常常见了,通常是一深一浅,或自由组合衍生出众多主题,或任意主题,这时候,设计一个工程化主题切换功能,并梳理现代前端样式的解决方案显得尤为重要。
ConardLi
2023/01/09
1.6K0
关于前端主题切换的思考和现代前端样式的解决方案落地
网页主题自动适配:网页跟随系统自动切换主题
方式3:使用类名切换,通过对顶层节点设置不同的类名,然后定义不同类名的CSS样式,切换主题时修改类名即可
老K博客
2024/06/20
2910
鸿蒙开发:适配系统深浅色模式
无论是Android还是iOS,在系统设置中,都有着深色和浅色两种外观模式,同样,鸿蒙系统中也存在这样的外观切换,如何让自己的应用,跟随着系统的模式进行动态切换呢?目前系统给我们提供了两种方式可以实现,一种是资源形式,一种是动态的代码形式。
程序员一鸣
2024/12/29
2580
鸿蒙开发:适配系统深浅色模式
前端工程化思维:主题切换架构
👆点击“博文视点Broadview”,获取更多书讯 在前端基础建设中,对样式方案的处理是必不可少的。 在本文中,我们将实现一个工程化主题切换功能,并梳理现代前端样式的解决方案。 1 设计一个主题切换工程架构 随着iOS 13引入深色模式(Dark Mode),各大应用和网站也都开始支持深色模式。相比于传统的页面配色方案,深色模式具有较好的降噪性,也能让用户的眼睛在看内容时更舒适。 那么对于前端来说,如何高效地支持深色模式呢? 这里的高效就是指工程化、自动化。在介绍具体方案前,我们先来了解一个必会的前端工
博文视点Broadview
2022/08/31
6750
前端工程化思维:主题切换架构
HarmonyOS 开发实践——基于原生能力的深色模式适配
对于原生开发的应用,深色模式适配是开发过程中常见的业务场景,系统可以通过状态栏中的深色模式开关配置系统的颜色模式,当系统颜色模式方式变化时,应用经常会遇到如下的业务诉求:
小帅聊鸿蒙
2024/11/11
2420
HarmonyOS 开发实践——基于原生能力的深色模式适配
DarkMode(2):深色模式解决方案——css颜色变量实现Dark Mode
暗黑模式实现,最初的设计,就是参考之前的主题模式。所谓多套主题/配色/皮肤,就是我们很常见的换肤功能。换肤简单的实现就是更换 css实现不同样式呈现不同肤色。
周陆军
2020/12/11
3.6K0
vue项目主题切换
主要的实现原理是,2套css样式,2套js文件,如果需要切换图片的情况也需要2套图片,页面上有个切换按钮,点击的时候切换css样式和js文件,以及切换图片,css文件切换时会立即起效,但是js没有效果,需要重新刷新下,采用的是点击按钮的时候直接reload,切换样式文件和js文件都在初始化时进行
tianyawhl
2022/05/29
1.2K0
实现用户自定义主题深浅模式浏览站点
如今大部的网站都实现了深浅主题2种不同模式的配色,比如说程序员大多喜欢深色模式,或许是需要长时间使用电脑,该模式能够一定程度上保护视力。从表面现象上来看,实现这一功能需要 CSS 和 JavaScript 两者搭配着一起使用,但当深入以后发现有些没料想的事情,且听我慢慢叙说。
凡梦星尘
2024/11/20
900
实现用户自定义主题深浅模式浏览站点
如何在 Vue 3 + Element Plus 项目中实现动态设置主题色以及深色模式切换
在现代 Web 应用中,主题切换功能尤其是深色模式和自定义主题色的动态切换,已经成为提升用户体验的关键要素之一。它不仅能够根据用户的喜好自动调整界面风格,还能够为不同的场景提供更好的视觉效果,特别是在夜间使用时,深色模式可以减轻眼睛的疲劳。
空白诗
2024/09/17
1.7K0
如何在 Vue 3 + Element Plus 项目中实现动态设置主题色以及深色模式切换
现代 CSS 解决方案:accent-color 强调色
accent-color 是从 Chrome 93 开始被得到支持的一个不算太新属性。之前一直没有好好介绍一下这个属性。直到最近在给一些系统整体切换主题色的时候,更深入的了解了一下这个属性。
winty
2024/04/15
1610
现代 CSS 解决方案:accent-color 强调色
Compose主题切换——让你的APP也能一键换肤
应用换肤,这真的是一个老生常谈的问题,从原生安卓开始、到后来的 Flutter ,再到现在的 Compose ,虽说老生常谈,但其实还是新瓶装旧酒。
ZhuJiang
2022/08/02
8860
Compose主题切换——让你的APP也能一键换肤
Flutter主题切换——让你的APP也能一键换肤
为了让你的 App 更美观,主题切换已经是一个必不可少的功能了,但如果想在传统的 Android 和 iOS 上分别适配不同的主题相当繁琐。但这一切,在 Flutter 中都非常容易实现。今天我们就来看看,如何在 Flutter 中给你的 App 添加换肤功能。
出其东门
2020/04/26
4.8K0
Web前端主题切换的几种方案
本文将介绍 Web 前端主题切换的几种常用方案,示例代码基于 React 框架。废话少说,show you the code!
Dickensl
2022/06/14
2.3K0
现代 CSS 解决方案:accent-color 强调色
accent-color 是从 Chrome 93 开始被得到支持的一个不算太新属性。之前一直没有好好介绍一下这个属性。直到最近在给一些系统整体切换主题色的时候,更深入的了解了一下这个属性。
Sb_Coco
2024/02/28
1570
现代 CSS 解决方案:accent-color 强调色
Electron入门教程4 —— 切换应用的主题
如果您想要手动在亮/暗模式之间切换,您可以通过在nativeTheme模块的themeSource属性中设置所需的模式来做到这一点。此属性的值将传播到您的渲染进程。任何与prefers-color-scheme相关的CSS规则都将相应地更新。
害恶细君
2022/11/22
9920
Electron入门教程4 —— 切换应用的主题
【vite+vue3+Ts+element-plus】肩并肩带你写后台管理之scss的使用和自定义主题、暗黑模式
scss的安装、全局设置及一些常规用法 css变量的一些用法 element-plus自定义主题的两种实现方法 暗黑模式的视线
十里青山
2023/04/28
4.9K1
【vite+vue3+Ts+element-plus】肩并肩带你写后台管理之scss的使用和自定义主题、暗黑模式
推荐阅读
相关推荐
Flutter中的Material Theme完全指南:从入门到实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档