HarmonyOS使用系统图标
HarmonyOS图标符号是系统内置的一套图标资源库。开发者可以通过图标的资源名称,利用SymbolGlyph和SymbolSpan组件可以高效索引并使用相应的图标。使用HarmonyOS Symbol,开发者不仅可以轻松地通过图标名称引用图标资源,从而简化开发流程。还能够确保其应用程序在视觉上与系统的设计风格保持一致,从而提升用户界面的专业性和准确性。
对于系统资源,可以通过"$r('sys.symbol.resource_name')
"的形式访问。其中,sys表示系统资源;symbol为系统图标资源类型;resource_name为资源名称。通过HarmonyOS Symbol图标网站(https://developer.huawei.com/consumer/cn/design/harmonyos-symbol/),可以轻松查看到HarmonyOS Symbol图标的资源名称。
以下是SymbolGlyph组件和SymbolSpan组件使用系统图标的示例。本节示例源码可以在"ArkUISymbolGlyphSymbolSpan"应用下找到。
- 利用SymbolGlyph组件使用系统图标
SymbolGlyph是图标小符号组件,便于使用精美的图标,如渲染多色图标和使用动效图标。
以下是利用SymbolGlyph组件使用系统图标的例子。
// SymbolGlyph通过$r引用Resource资源来创建,目前仅支持系统预置的Symbol资源名。 // 通过fontSize属性设置SymbolGlyph的大小。 // 通过fontColor属性设置SymbolGlyph的颜色。 Row() { SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(48) .fontColor([Color.Black]) SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(72) .fontColor([Color.Green]) SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(96) .fontColor([Color.Pink]) }
在上述例子中:
- SymbolGlyph通过
$r
引用Resource资源来创建,目前仅支持系统预置的Symbol资源名。 - 通过fontSize属性设置SymbolGlyph的大小。
- 通过fontColor属性设置SymbolGlyph的颜色。
- 利用SymbolSpan组件使用系统图标
SymbolSpan作为Text组件的子组件,可在文本中穿插显示图标小符号。
以下是利用SymbolSpan组件使用系统图标的例子。
// SymbolSpan可作为Text的子组件用于显示图标小符号。 // 可以在一个Text组件内添加多个SymbolSpan,从而展示一串连续的图标。 // 通过fontSize属性设置SymbolSpan的大小。 // 通过fontColor属性设置SymbolSpan的颜色。 Row() { Text() { SymbolSpan($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(48) .fontColor([Color.Black]) SymbolSpan($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(72) .fontColor([Color.Green]) SymbolSpan($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(96) .fontColor([Color.Pink]) } }
在上述例子中:
- SymbolSpan可作为Text的子组件用于显示图标小符号。可以在一个Text组件内添加多个SymbolSpan,从而展示一串连续的图标。
- 通过fontSize属性设置SymbolSpan的大小。
- 通过fontColor属性设置SymbolSpan的颜色。
- fontWeight属性
通过fontWeight属性可以设置SymbolGlyph组件或者SymbolSpan组件的粗细,以下是一个例子。
// 通过fontWeight属性设置SymbolSpan组件的粗细。 Row() { Column() { Text("Lighter") Text() { SymbolSpan($r('sys.symbol.ohos_trash')) .fontWeight(FontWeight.Lighter) .fontSize(96) } } Column() { Text("Normal") Text() { SymbolSpan($r('sys.symbol.ohos_trash')) .fontWeight(FontWeight.Normal) .fontSize(96) } } Column() { Text("Bold") Text() { SymbolSpan($r('sys.symbol.ohos_trash')) .fontWeight(FontWeight.Bold) .fontSize(96) } } }
在上述例子中,通过fontWeight属性设置SymbolSpan的粗细,值分别是Lighter、Normal、Bold三者之一。
- renderingStrategy属性
通过renderingStrategy属性可以设置SymbolGlyph组件或者SymbolSpan组件的渲染策略,以下是一个例子。
// 通过renderingStrategy属性设置SymbolSpan的渲染策略。 Row() { Column() { Text("单色") Text() { SymbolSpan($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(96) .renderingStrategy(SymbolRenderingStrategy.SINGLE) .fontColor([Color.Black, Color.Green, Color.White]) } } Column() { Text("多色") Text() { SymbolSpan($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(96) .renderingStrategy(SymbolRenderingStrategy.MULTIPLE_COLOR) .fontColor([Color.Black, Color.Green, Color.White]) } } Column() { Text("分层") Text() { SymbolSpan($r('sys.symbol.ohos_folder_badge_plus')) .fontSize(96) .renderingStrategy(SymbolRenderingStrategy.MULTIPLE_OPACITY) .fontColor([Color.Black, Color.Green, Color.White]) } } }
在上述例子中,通过renderingStrategy属性设置SymbolSpan的渲染策略,值分别是SINGLE、MULTIPLE_COLOR、MULTIPLE_OPACITY三者之一,代表单色、多色、分层的渲染效果。
- effectStrategy属性
通过effectStrategy属性可以设置SymbolGlyph组件或者SymbolSpan组件的动效策略,以下是一个例子。
// 通过effectStrategy属性设置SymbolSpan的动效策略。 Row() { Column() { Text("无动效") Text() { SymbolSpan($r('sys.symbol.ohos_wifi')) .fontSize(96) .effectStrategy(SymbolEffectStrategy.NONE) } } Column() { Text("整体缩放动效") Text() { SymbolSpan($r('sys.symbol.ohos_wifi')) .fontSize(96) .effectStrategy(SymbolEffectStrategy.SCALE) } } Column() { Text("层级动效") Text() { SymbolSpan($r('sys.symbol.ohos_wifi')) .fontSize(96) .effectStrategy(SymbolEffectStrategy.HIERARCHICAL) } } }
在上述例子中,通过effectStrategy属性设置SymbolSpan的动效策略,值分别是NONE、SCALE、HIERARCHICAL三者之一,代表无动效、整体缩放动效、层级动效的渲染效果。
- symbolEffect属性
通过symbolEffect属性可以设置SymbolGlyph组件的自定义动效策略,以下是一个例子。
@State isActive: boolean = true; @State triggerValueReplace: number = 0; // 通过symbolEffect属性设置自定义SymbolGlyph的动效。 Row() { // 通过设置symbolEffect属性,可以同时配置SymbolGlyph的动效策略及其播放状态。 Column() { Text("可变颜色动效") SymbolGlyph($r('sys.symbol.ohos_wifi')) .fontSize(96) .symbolEffect(new HierarchicalSymbolEffect(EffectFillStyle.ITERATIVE), this.isActive) Button(this.isActive ? '关闭' : '播放').onClick(() => { this.isActive = !this.isActive; }) } // 通过设置symbolEffect属性,可以同时指定SymbolGlyph的动效策略及其播放触发条件。 Column() { Text("弹跳动效") SymbolGlyph($r('sys.symbol.ellipsis_message_1')) .fontSize(96) .fontColor([Color.Gray]) .symbolEffect(new BounceSymbolEffect(EffectScope.WHOLE, EffectDirection.UP), this.triggerValueReplace) Button('trigger').onClick(() => { this.triggerValueReplace = this.triggerValueReplace + 1; }) } }
在上述例子中,通过symbolEffect属性设置SymbolGlyph的自定义动效策略,自定义的类型可以是SymbolEffect的子类,比如HierarchicalSymbolEffect或者BounceSymbolEffect等。
以下是相关HarmonyOS应用生态的相关学习资料:
- 《跟老卫学 HarmonyOS 开发》 开源免费教程,https://github.com/waylau/harmonyos-tutorial
- 《鸿蒙 HarmonyOS 手机应用开发实战》(清华大学出版社)
- "鸿蒙系统实战短视频 App 从 0 到 1 掌握 HarmonyOS"(https://coding.imooc.com/class/674.html)
- 《鸿蒙 HarmonyOS 应用开发入门》(清华大学出版社)
- "2024 鸿蒙零基础快速实战 - 仿抖音 App 开发(ArkTS 版)"(https://coding.imooc.com/class/843.html)
- 《鸿蒙 HarmonyOS 应用开发从入门到精通战(第 2 版)》(北京大学出版社)
- 《鸿蒙之光 HarmonyOS NEXT 原生应用开发入门》(清华大学出版社)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
“女版巴菲特”木头姐《Big Ideas 2025》:2030年 AI 潜在规模高达 37 万亿美元
有着“女版巴菲特”之称的凯瑟琳・伍德(“木头姐”)于 2014 年创立投资公司 ARK Invest。公开信息显示,ARK Invest 目前的 ETF 一共有 14 支,覆盖两大投资方向:科技创新与数字资产,其中 6 支主动管理型的科技创新 ETF 的净资总规模达 302 亿美元。自 2017 年以来,其团队每年都会发布《Big Ideas》系列报告,以极高的含金量,成为全球科技创业者与投资者的重要参考。 2 月初,用"真金白银"做押注的《Big Ideas 2025》报告新如期而至,深入剖析了涵人工智能(AI)、机器人、能源存储、公共区块链和多组学测序五大技术领域,全方位展现了科技领域未来发展的潜力与趋势。在这众多前沿科技中,AI 占据重要板块和篇幅。AI4AI 社区将带领大家解读《Big Ideas 2025》报告中 AI 相关部分,关注 AI4AI 社区公众号,后台回复关键词“木头姐”,即可免费获取报告原文。 随着数据不断演进的计算系统和软件将破解复杂难题、实现知识工作自动化,并加速技术向各个经济领域的渗透。神经网络的普及影响或将超越电气化革命,且可能创造数十万亿美元的价值...
- 下一篇
Node.js技术原理分析系列——Node.js的perf_hooks模块作用和用法
Node.js 是一个开源的、跨平台的 JavaScript 运行时环境,它允许开发者在服务器端运行 JavaScript 代码。Node.js 是基于 Chrome V8 引擎构建的,专为高性能、高并发的网络应用而设计,广泛应用于构建服务器端应用程序、网络应用、命令行工具等。 本系列将分为9篇文章为大家介绍 Node.js 技术原理:从 Node.js调试能力分析到如何在Node.js中新增一个内置模块 ,从性能分析工具 perf_hooks 的用法到 Chrome DevTools 的性能问题剖析,再到 ABI 稳定的理解、基于 V8 封装 JavaScript 运行时、模块加载方式探究、内置模块外置以及 Node.js addon 的全面解读等主题,每一篇都干货满满。 在上一节中我们探讨了如何在Node.js中新增一个内置模块,在本节中则主要分享Node.js的perf_hooks模块作用和用法,本文内容为本系列第3篇,由体验技术团队屈金雄原创。以下为正文内容。 前言 在 Node.js 中,如何测量一段代码的耗时呢? 比如 for 循环遍历 100 次的耗时。让我们带着这个问题...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品