HarmonyOS使用系统图标

简介: HarmonyOS图标符号是系统内置的图标资源库,开发者可通过SymbolGlyph和SymbolSpan组件高效引用图标资源,简化开发流程并确保应用与系统设计风格一致。通过`$r('sys.symbol.resource_name')`访问系统图标资源,支持调整大小、颜色、粗细、渲染策略及动效。更多示例和学习资料详见官方文档和教程。

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组件使用系统图标的例子。

// 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的颜色。

2. 利用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的颜色。

3. 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三者之一。

4. 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三者之一,代表单色、多色、分层的渲染效果。

5. 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三者之一,代表无动效、整体缩放动效、层级动效的渲染效果。

6. 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 原生应用开发入门》(清华大学出版社)
目录
相关文章
|
3月前
|
定位技术 开发工具
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
123 5
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
|
3月前
|
数据可视化 BI UED
40.[HarmonyOS NEXT Row案例八] 打造专业数据统计卡片:两端对齐与响应式图标的完美结合
在数据分析、金融、健康等应用中,数据统计卡片是展示关键指标和趋势的重要UI组件。本教程将详细讲解如何使用HarmonyOS NEXT的Row组件创建一个专业的数据统计卡片,实现两端对齐布局和响应式图标,打造出既美观又实用的数据可视化界面。
91 2
|
4月前
|
Linux 编译器 Android开发
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
217 1
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
|
3月前
|
安全 开发工具 数据安全/隐私保护
HarmonyOS应用安全全攻略:从系统到代码的全面防护
本文全面解析HarmonyOS应用安全开发,涵盖系统到代码的防护策略。首先介绍HarmonyOS三层安全体系:系统安全层、开发工具层与应用生态层。接着详解设备与数据安全等级划分,提供分级加密实战代码,包括文件读写与HUKS高级加密案例。最后总结开发最佳实践,强调数据分类、最小权限、加密常态及传输安全保障,助你构建更安全的应用。保护用户数据不仅是功能需求,更是开发者责任!
205 0
|
1月前
|
移动开发 网络协议 小程序
鸿蒙NEXT即时通讯/IM系统RinbowTalk v2.4版发布,基于MobileIMSDK框架、ArkTS编写
RainbowTalk是一套基于开源即时通讯讯IM框架 MobileIMSDK 的产品级鸿蒙NEXT端IM系统。纯ArkTS编写、全新开发,没有套壳、也没走捷径,每一行代码都够“纯血”。与姊妹产品RainbowChat和RainbowChat-Web 技术同源,历经考验。
82 1
|
2月前
|
缓存 移动开发 网络协议
纯血鸿蒙NEXT即时通讯/IM系统:RinbowTalk正式发布,全源码、纯ArkTS编写
RainbowTalk是一套基于MobileIMSDK的产品级鸿蒙NEXT端IM系统,目前已正式发布。纯ArkTS、从零编写,无套壳、没走捷径,每一行代码都够“纯”(详见:《RainbowTalk详细介绍》)。 MobileIMSDK是一整套开源IM即时通讯框架,历经10年,超轻量级、高度提炼,一套API优雅支持 UDP 、TCP 、WebSocket 三种协议,支持 iOS、Android、H5、标准Java、小程序、Uniapp、鸿蒙NEXT,服务端基于Netty编写。
200 1
|
4月前
|
定位技术 开发者
HarmonyOS实战:高德地图自定义定位图标展示
本文详细介绍了在鸿蒙系统中实现地图定位功能的开发流程与注意事项。首先,开发者需要申请两个必要的定位权限,并确保用户手动开启系统设置中的位置权限。接着,通过高德定位获取用户位置信息,并使用自定义图标替代默认的定位箭头。文章特别强调了经纬度数据必须为float类型,否则可能导致定位不准确。此外,还需检查系统的GPS定位按钮是否开启,以确保定位功能正常使用。通过本文的指导,开发者可以避免常见的定位问题,顺利完成地图定位功能的开发。
202 2
HarmonyOS实战:高德地图自定义定位图标展示
|
3月前
|
UED 容器
42.[HarmonyOS NEXT Row案例十] 精美图文混排卡片:左图标与右文本的完美结合
在移动应用界面设计中,图文混排卡片是一种常见且实用的UI组件,它通过将图标和文本组合在一起,以简洁明了的方式呈现信息。本教程将详细讲解如何使用HarmonyOS NEXT的Row组件创建一个精美的图文混排卡片,实现左侧图标与右侧多行文本的布局效果。 图文混排卡片广泛应用于各类应用场景,如通知提醒、功能介绍、信息展示等。通过合理的布局和样式设置,可以提升用户体验和界面美观度。
91 4
|
3月前
|
UED 开发者 容器
36.[HarmonyOS NEXT Row案例四] 打造精美图标按钮:垂直对齐与视觉平衡的艺术
在移动应用界面设计中,带图标的操作按钮是一种常见且实用的UI元素,它结合了图标的直观性和文本的描述性,能够有效提升用户体验。本教程将详细讲解如何使用HarmonyOS NEXT的Row组件创建一个带图标的操作按钮,重点介绍垂直对齐与视觉平衡的实现技巧,帮助开发者打造出专业、美观的交互界面。
87 4
|
3月前
|
开发工具 数据安全/隐私保护 开发者
打造鸿蒙系统中最好用的加载动画和提示弹窗
幽蓝君开发了鸿蒙平台的轻量级弹窗工具 yloadinghud,旨在实现简洁优雅的提示交互。无需在每个页面重复初始化,只需一行代码即可展示加载动画或提示弹窗。支持多种类型,如成功、失败提示及文字弹窗,且具备自动消失功能,使用便捷。项目已上传至 ohpm 仓库,欢迎搜索体验并提出宝贵建议。#三方SDK #工具效率