首页 > 其他分享 >鸿蒙UI开发——使用WidthTheme实现局部深浅色

鸿蒙UI开发——使用WidthTheme实现局部深浅色

时间:2024-12-26 23:28:24浏览次数:7  
标签:深色 自定义 鸿蒙 模式 UI WithTheme 组件 WidthTheme 浅色

1、场景描述

在实际的应用开发中,我们可能需要在界面中局部应用深色或者浅色的界面样式,与全局的深色、亮色同时生效。场景例如:深/亮色预览。此时,我们可以使用WithTheme能力来达到我们的效果。

2、WithTheme

WithTheme组件可以用于设置应用局部页面自定义主题风格,可设置子组件深浅色模式和自定义主题配色。其中自定义主题配色我们在之前的文章中已经有过讲解,详见:鸿蒙UI开发——自定义主题色

WidthTheme接口定义如下:

WithTheme(options: WithThemeOptions)

其中WithThemeOptions定义如下:

struct WidthThemeOptions {/* 用于自定义WithTheme作用域内组件缺省配色。 默认值:undefined,缺省样式跟随系统token默认样式。 */theme: CustomTheme;/*用于指定WithTheme作用域内组件配色深浅色模式。 默认值:ThemeColorMode.System。*/colorMode: ThemeColorMode;}

其中theme我们在之前自定义主题色的文章中已经有介绍,不再赘述,详见鸿蒙UI开发——自定义主题色。其中colorMode是深浅色的配置,其值是一个枚举,定义如下:​​​​​​​

SYSTEM // 跟随系统深浅色模式。LIGHT // 固定使用浅色模式。DARK // 固定使用深色模式。

需要注意:

WidthTheme不支持通用属性(例如:长/宽/背景色等)与通用事件(例如:点击、触摸、拖拽等)的设置。

3、使用示例

在WithTheme的作用范围内,组件的样式资源值会根据指定的模式,读取对应的深浅色模式系统和应用资源值。这意味着,在WithTheme作用范围内,组件的配色会根据所指定的深浅模式进行调整。

通过WithTheme({ colorMode: ThemeColorMode.DARK }),可以将作用范围内的组件设置为深色模式。

设置局部深浅色时,需要添加dark.json资源文件,深浅色模式才会生效。添加位置为:resources -> dark -> element -> dark.json(如果没有对应的文件或者文件夹,自己手动创建即可),示意图如下:

图片

dark.json具体的示例代码如下:​​​​​​​

  {    "color": [      {        "name": "start_window_background",        "value": "#FFFFFF"      }    ]  }

使用WidthTheme的示例如下(我们可以在Page中局部生效深色和亮色模式,代码见 18行、33行):​​​​​​​

// 指定局部深浅色模式@Entry@Componentstruct Index {  build() {    Column() {    // 系统默认      Column() {        Text('无WithTheme')          .fontSize(40)          .fontWeight(FontWeight.Bold)      }      .justifyContent(FlexAlign.Center)      .width('100%')      .height('33%')      .backgroundColor($r('sys.color.background_primary'))      // 设置组件为深色模式      WithTheme({ colorMode: ThemeColorMode.DARK }) {        Column() {          Text('WithTheme')            .fontSize(40)            .fontWeight(FontWeight.Bold)          Text('DARK')            .fontSize(40)            .fontWeight(FontWeight.Bold)        }        .justifyContent(FlexAlign.Center)        .width('100%')        .height('33%')        .backgroundColor($r('sys.color.background_primary'))      }      // 设置组件为浅色模式      WithTheme({ colorMode: ThemeColorMode.LIGHT }) {        Column() {          Text('WithTheme')            .fontSize(40)            .fontWeight(FontWeight.Bold)          Text('LIGHT')            .fontSize(40)            .fontWeight(FontWeight.Bold)        }        .justifyContent(FlexAlign.Center)        .width('100%')        .height('33%')        .backgroundColor($r('sys.color.background_primary'))      }    }    .height('100%')    .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.END, SafeAreaEdge.BOTTOM, SafeAreaEdge.START])  }}

效果如下(在同一个Page中,我们默认的样式为亮色,中间局部实现了深色模式渲染):

图片

标签:深色,自定义,鸿蒙,模式,UI,WithTheme,组件,WidthTheme,浅色
From: https://blog.csdn.net/harmonyClassRoom/article/details/144755169

相关文章

  • 鸿蒙 ArkTs 持久化轻量级数据简单对数据进行存储
    文章目录场景整体逻辑具体代码和逻辑注意场景有时候我们需要快速的储存一些标识,比如第一次启动应用的隐私协议弹窗,这个时候我们就需要一直东西,将这个标识存起来整体逻辑使用的是preferences用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻......
  • 找不到RADCUI.dll文件或RADCUI.dll文件丢失该怎么办?
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • Struts2+Spring4+Hibernate4+Maven+EasyUI整合开发 员工管理系统
    packagecom.java1234.action;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.PrintWriter;importjava.util.A......
  • 【科技前沿】零代码构建台风监测大屏:Experience Builder赋能风云气象卫星(FY-4A)应用
    本教程首发于极思课堂,极思课堂(极思课堂-GeoSceneOnline)是易智瑞信息技术有限公司面向公司客户、合作伙伴、GIS从业者、高校教师与学生以及热衷于GIS技术的极客们打造的一站式GIS前沿技术学习平台。欢迎大家访问、学习与关注。课程原文链接:极思课堂-GeoSceneOnlinehttp......
  • UI设计公司兰亭妙微,打造专业医疗行业UI设计
    医疗行业界面解决方案以医患使用者为中心,遵循行业使用习惯和表达方式,优化使用流程、设计简洁、人性化的操作界面,采用插画、三维动画、微动效的创作方法,让用户感受到愉悦易用美观的使用体验。蓝蓝设计与知名企业合作项目有:骨手术机器人、腔镜手术机器人、医学影像诊断、健康大数据......
  • ERROR! The server quit without updating PID file (/usr/local/mysql/mysql-5.7.24/
    背景:虚拟机Linux安装MySQL1.MySQL初始化#到mysql-5.7.24cd/usr/local/mysql/mysql-5.7.24#执行命令./bin/mysqld--initialize--user=mysql--basedir=/usr/local/mysql/mysql-5.7.24--datadir=/usr/local/mysql/mysql-5.7.24/data2.启动mysql服务器cd/usr/lo......
  • 智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型
    在现代数字世界中,图形用户界面(GUI)是人机交互的核心。然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社区中,越来越多的研究者和开发者们开始关注VLM-basedGUIAgent。2023年12月,智谱发布了CogAgent,第一个......
  • quietflow.js-jquery背景层动画插件
    quietflow.js是一款可以制作炫酷页面背景层动画效果的jquery插件。该jquery插件内置了9种不同效果的背景层动画,你可以为页面轻松的添加背景动画效果。可用的背景层动画效果有:squareFlashvortexbouncingBallsshootingLinessimpleGradientstarfieldlayeredTrianglescorner......
  • ComfyUI【基础篇】:ComfyUI插件详解,附ComfyUI插件的下载方式示例
    前言我们知道,ComfyUI作为一个基于StableDiffusion的AI绘画创作工具,为用户提供功能丰富和灵活的操作方式。它主要是通过节点流程的方式让用户能够更加精准地定制工作流,而ComfyUI插件则进一步扩展了其能力,使用户能够根据自己的需求定制和增强工作流程。今天我们重点来了......
  • 【comfyui教程】ComfyUI喂饭教程!一个适合新手的工作流搭建思路!
    前言在[《解锁ComfyUI:新手到高手的五级跳》]这篇文章中,我分享了自己学习ComfyUI的五个阶段,而最后一个阶段——创建自己的工作流,尚未详细介绍。今天我就来填坑啦~自己动手,丰衣足食,自己从头到尾搭建一个工作流,才是真正掌握ComfyUI精髓的王道。我们马上开始吧!一、明确目标......