【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)
    }
  }
}
相关推荐
yrjw4 小时前
一款基于react-native harmonyOS 封装的【文档】文件预览查看开源库(基于Harmony 原生文件预览服务进行封装)
harmonyos
小徐不徐说11 小时前
每日一算:华为-批萨分配问题
数据结构·c++·算法·leetcode·华为·动态规划·后端开发
搜狐技术产品小编20231 天前
搜狐新闻直播间适配HarmonyOs实现点赞动画
华为·harmonyos
zhanshuo1 天前
ArkUI 玩转水平滑动视图:超全实战教程与项目应用解析
harmonyos·arkui
zhanshuo1 天前
ArkUI Canvas 实战:快速绘制柱状图图表组件
harmonyos·arkui
zhanshuo2 天前
手把手教你用 ArkUI 写出高性能分页列表:List + onScroll 实战解析
harmonyos
zhanshuo2 天前
深入解析 ArkUI 触摸事件机制:从点击到滑动的开发全流程
harmonyos
i仙银2 天前
鸿蒙沙箱浏览器 - SandboxFinder
app·harmonyos
阿群的AI工作室2 天前
快来生成属于自己的emoji小人,【超详细教程】包含视频玩法
svg·动效
Georgewu2 天前
【HarmonyOS】鸿蒙应用开发中常用的三方库介绍和使用示例
harmonyos