【HarmonyOS Next】鸿蒙应用加载SVG文件显示图标

【HarmonyOS Next】鸿蒙应用加载SVG文件显示图标

一、SVG是什么?

SVG 即可缩放矢量图形(Scalable Vector Graphics),它是一种基于 XML 语法的二维矢量图形格式,由万维网联盟(W3C)制定。

SVG 使用 XML 文本格式来描述图形,与传统的位图图像(如 JPEG、PNG 等)不同,SVG 图形是由一系列的点、线、形状和颜色定义组成的,而不是像素点。这使得 SVG 图形具有无限的可扩展性,无论放大或缩小多少倍,图形都能保持清晰、不失真。

SVG 代码示例,用于绘制一个黄色的圆形:

dart 复制代码
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" cy="50" r="40" fill="yellow" />
</svg>

二、鸿蒙中如何加载显示?

首先将 SVG 文件放置在项目的 entry/src/main/resources/base/media 目录下。

dart 复制代码
@Entry
@Component
struct SvgIconExample {
  build() {
    Column({ space: 50 }) {
      // 假设 svg 文件名为 icon.svg
      Image($r('media.icon')) 
        .width(100)
        .height(100)
    }
    .width('100%')
    .padding({ top: 50 })
  }
}

$r 是资源引用函数,media.icon 表示引用 media 目录下名为 icon 的资源文件。这里会加载 entry/src/main/resources/base/media 目录下的 icon.svg 文件。

三、源码示例:

以下是一个将本地加载 SVG 和网络加载 SVG :

dart 复制代码
@Entry
@Component
struct SvgLoadingExample {
  build() {
    Column({ space: 50 })
      .width('100%')
      .padding({ top: 50 })
      .alignItems(FlexAlign.Center) {
      // 本地加载 SVG
      Text('本地加载 SVG')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
      // 假设本地 SVG 文件名为 local_icon.svg
      Image($r('media.local_icon')) 
        .width(100)
        .height(100)

      // 网络加载 SVG
      Text('网络加载 SVG')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
      Image('https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/SVG_Logo.svg/1200px-SVG_Logo.svg.png') 
        .width(100)
        .height(100)
    }
  }
}
相关推荐
Y***K4343 小时前
HarmonyOS在智能穿戴中的健康算法
华为·harmonyos
1***81536 小时前
HarmonyOS在智能车载中的娱乐系统
华为·harmonyos·娱乐
4***R2406 小时前
HarmonyOS在智能车载中的车载娱乐
华为·harmonyos·娱乐
食品一少年7 小时前
【DAY1】零基础Flutter 编译开发 鸿蒙HarmonyOS
华为·harmonyos
T***16078 小时前
HarmonyOS在智能家居中的应用
华为·智能家居·harmonyos
马剑威(威哥爱编程)8 小时前
鸿蒙6开发中CANN Kit十大常见问题与解决方案
chrome·华为·harmonyos
h***83938 小时前
HarmonyOS在智能家居中的Huawei Link
华为·智能家居·harmonyos
G_dou_8 小时前
KMP & OpenHarmony 实现二分查找
kotlin·鸿蒙
0***R51510 小时前
HarmonyOS在智能车载中的车载系统
华为·车载系统·harmonyos
F***c32510 小时前
HarmonyOS在智能车载系统中的应用实践
华为·车载系统·harmonyos