【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)
    }
  }
}
相关推荐
@不误正业7 分钟前
OpenHarmony集成AI Agent实战:打造鸿蒙智能助理
人工智能·华为·harmonyos
咬人喵喵25 分钟前
植树节主题核心 SVG 交互玩法 + 品牌 / 账号案例 + 组件 / 教程
前端·css·编辑器·svg·e2编辑器
小资同学1 小时前
考研机试之递归与贪心算法
算法·华为·贪心算法
仓颉编程语言2 小时前
CangjieSkills 正式开源:为仓颉 AI 编程打造的“技能增强“方案,实测降低 60% 费用
华为·ai编程·鸿蒙·仓颉编程语言
弓.长.4 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-netinfo — 网络状态检测
网络·react native·harmonyos
弓.长.4 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-network-info — 网络信息获取
网络·react native·harmonyos
弓.长.4 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-image-crop-picker — 图片选择裁剪组件
react native·react.js·harmonyos
讯方洋哥16 小时前
HarmonyOS App开发——鸿蒙ArkTS基于首选项引导页的集成和应用
华为·harmonyos
左手厨刀右手茼蒿21 小时前
Flutter 三方库 all_lint_rules_community 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、严谨、基于全量社区 Lint 规则的工业级静态代码质量与安全审计引擎
flutter·harmonyos·鸿蒙·openharmony·all_lint_rules_community
雷帝木木21 小时前
Flutter for OpenHarmony:Flutter 三方库 cbor 构建 IoT 设备的极致压缩防窃协议(基于标准二进制 JSON 表达格式)
网络·物联网·flutter·http·json·harmonyos·鸿蒙