HarmonyOS使用系统图标

[复制链接]
发表于 2025-4-8 02:38:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
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”应用下找到。
1. 使用SymbolGlyph组件使用系统图标

SymbolGlyph是图标小符号组件,便于使用精美的图标,如渲染多色图标和使用动效图标。
以下是使用SymbolGlyph组件使用系统图标的例子。
  1. // SymbolGlyph通过$r引用Resource资源来创建,目前仅支持系统预置的Symbol资源名。
  2. // 通过fontSize属性设置SymbolGlyph的大小。
  3. // 通过fontColor属性设置SymbolGlyph的颜色。
  4. Row() {
  5.   SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus'))
  6.     .fontSize(48)
  7.     .fontColor([Color.Black])
  8.   SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus'))
  9.     .fontSize(72)
  10.     .fontColor([Color.Green])
  11.   SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus'))
  12.     .fontSize(96)
  13.     .fontColor([Color.Pink])
  14. }
复制代码
在上述例子中:


  • SymbolGlyph通过$r引用Resource资源来创建,现在仅支持系统预置的Symbol资源名。
  • 通过fontSize属性设置SymbolGlyph的巨细。
  • 通过fontColor属性设置SymbolGlyph的颜色。

2. 使用SymbolSpan组件使用系统图标

SymbolSpan作为Text组件的子组件,可在文本中穿插显示图标小符号。
以下是使用SymbolSpan组件使用系统图标的例子。
  1. // SymbolSpan可作为Text的子组件用于显示图标小符号。
  2. // 可以在一个Text组件内添加多个SymbolSpan,从而展示一串连续的图标。
  3. // 通过fontSize属性设置SymbolSpan的大小。
  4. // 通过fontColor属性设置SymbolSpan的颜色。
  5. Row() {
  6.   Text() {
  7.     SymbolSpan($r('sys.symbol.ohos_folder_badge_plus'))
  8.       .fontSize(48)
  9.       .fontColor([Color.Black])
  10.     SymbolSpan($r('sys.symbol.ohos_folder_badge_plus'))
  11.       .fontSize(72)
  12.       .fontColor([Color.Green])
  13.     SymbolSpan($r('sys.symbol.ohos_folder_badge_plus'))
  14.       .fontSize(96)
  15.       .fontColor([Color.Pink])
  16.   }
  17. }
复制代码
在上述例子中:


  • SymbolSpan可作为Text的子组件用于显示图标小符号。可以在一个Text组件内添加多个SymbolSpan,从而展示一勾通续的图标。
  • 通过fontSize属性设置SymbolSpan的巨细。
  • 通过fontColor属性设置SymbolSpan的颜色。

3. fontWeight属性

通过fontWeight属性可以设置SymbolGlyph组件或者SymbolSpan组件的粗细,以下是一个例子。
  1. // 通过fontWeight属性设置SymbolSpan组件的粗细。
  2. Row() {
  3.   Column() {
  4.     Text("Lighter")
  5.     Text() {
  6.       SymbolSpan($r('sys.symbol.ohos_trash'))
  7.         .fontWeight(FontWeight.Lighter)
  8.         .fontSize(96)
  9.     }
  10.   }
  11.   Column() {
  12.     Text("Normal")
  13.     Text() {
  14.       SymbolSpan($r('sys.symbol.ohos_trash'))
  15.         .fontWeight(FontWeight.Normal)
  16.         .fontSize(96)
  17.     }
  18.   }
  19.   Column() {
  20.     Text("Bold")
  21.     Text() {
  22.       SymbolSpan($r('sys.symbol.ohos_trash'))
  23.         .fontWeight(FontWeight.Bold)
  24.         .fontSize(96)
  25.     }
  26.   }
  27. }
复制代码
在上述例子中,通过fontWeight属性设置SymbolSpan的粗细,值分别是Lighter、Normal、Bold三者之一。

4. renderingStrategy属性

通过renderingStrategy属性可以设置SymbolGlyph组件或者SymbolSpan组件的渲染策略,以下是一个例子。
  1. // 通过renderingStrategy属性设置SymbolSpan的渲染策略。
  2. Row() {
  3.   Column() {
  4.     Text("单色")
  5.     Text() {
  6.       SymbolSpan($r('sys.symbol.ohos_folder_badge_plus'))
  7.         .fontSize(96)
  8.         .renderingStrategy(SymbolRenderingStrategy.SINGLE)
  9.         .fontColor([Color.Black, Color.Green, Color.White])
  10.     }
  11.   }
  12.   Column() {
  13.     Text("多色")
  14.     Text() {
  15.       SymbolSpan($r('sys.symbol.ohos_folder_badge_plus'))
  16.         .fontSize(96)
  17.         .renderingStrategy(SymbolRenderingStrategy.MULTIPLE_COLOR)
  18.         .fontColor([Color.Black, Color.Green, Color.White])
  19.     }
  20.   }
  21.   Column() {
  22.     Text("分层")
  23.     Text() {
  24.       SymbolSpan($r('sys.symbol.ohos_folder_badge_plus'))
  25.         .fontSize(96)
  26.         .renderingStrategy(SymbolRenderingStrategy.MULTIPLE_OPACITY)
  27.         .fontColor([Color.Black, Color.Green, Color.White])
  28.     }
  29.   }
  30. }
复制代码
在上述例子中,通过renderingStrategy属性设置SymbolSpan的渲染策略,值分别是SINGLE、MULTIPLE_COLOR、MULTIPLE_OPACITY三者之一,代表单色、多色、分层的渲染效果。

5. effectStrategy属性

通过effectStrategy属性可以设置SymbolGlyph组件或者SymbolSpan组件的动效策略,以下是一个例子。
  1. // 通过effectStrategy属性设置SymbolSpan的动效策略。
  2. Row() {
  3.   Column() {
  4.     Text("无动效")
  5.     Text() {
  6.       SymbolSpan($r('sys.symbol.ohos_wifi'))
  7.         .fontSize(96)
  8.         .effectStrategy(SymbolEffectStrategy.NONE)
  9.     }
  10.   }
  11.   Column() {
  12.     Text("整体缩放动效")
  13.     Text() {
  14.       SymbolSpan($r('sys.symbol.ohos_wifi'))
  15.         .fontSize(96)
  16.         .effectStrategy(SymbolEffectStrategy.SCALE)
  17.     }
  18.   }
  19.   Column() {
  20.     Text("层级动效")
  21.     Text() {
  22.       SymbolSpan($r('sys.symbol.ohos_wifi'))
  23.         .fontSize(96)
  24.         .effectStrategy(SymbolEffectStrategy.HIERARCHICAL)
  25.     }
  26.   }
  27. }
复制代码
在上述例子中,通过effectStrategy属性设置SymbolSpan的动效策略,值分别是NONE、SCALE、HIERARCHICAL三者之一,代表无动效、整体缩放动效、层级动效的渲染效果。

6. symbolEffect属性

通过symbolEffect属性可以设置SymbolGlyph组件的自定义动效策略,以下是一个例子。
  1. @State isActive: boolean = true;
  2. @State triggerValueReplace: number = 0;
  3. // 通过symbolEffect属性设置自定义SymbolGlyph的动效。
  4. Row() {
  5.   // 通过设置symbolEffect属性,可以同时配置SymbolGlyph的动效策略及其播放状态。
  6.   Column() {
  7.     Text("可变颜色动效")
  8.     SymbolGlyph($r('sys.symbol.ohos_wifi'))
  9.       .fontSize(96)
  10.       .symbolEffect(new HierarchicalSymbolEffect(EffectFillStyle.ITERATIVE), this.isActive)
  11.     Button(this.isActive ? '关闭' : '播放').onClick(() => {
  12.       this.isActive = !this.isActive;
  13.     })
  14.   }
  15.   // 通过设置symbolEffect属性,可以同时指定SymbolGlyph的动效策略及其播放触发条件。
  16.   Column() {
  17.     Text("弹跳动效")
  18.     SymbolGlyph($r('sys.symbol.ellipsis_message_1'))
  19.       .fontSize(96)
  20.       .fontColor([Color.Gray])
  21.       .symbolEffect(new BounceSymbolEffect(EffectScope.WHOLE, EffectDirection.UP), this.triggerValueReplace)
  22.     Button('trigger').onClick(() => {
  23.       this.triggerValueReplace = this.triggerValueReplace + 1;
  24.     })
  25.   }
  26. }
复制代码
在上述例子中,通过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实名职场社区
去登录
快速回复 返回顶部 返回列表