【问题标题】:Difference between SVG and VectorDrawable in AndroidAndroid中SVG和VectorDrawable的区别
【发布时间】:2023-03-21 18:03:01
【问题描述】:

Android虽然支持SVG,为什么要转成VectorDrawable?

此代码示例显示 Android 中的 SVG:

SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android);
imageView.setImageDrawable(svg.createPictureDrawable());

【问题讨论】:

  • VectorDrawable 是 SVG 的一个子集。它只解析 SVG 格式规范的 path 语法。
  • SVG 不支持开箱即用
  • This code example shows svg in android: ... 如果您安装了第 3 方库。
  • 请查看this答案。

标签: android svg android-vectordrawable


【解决方案1】:

您提到的 SVGParser 功能是对 Android 的 SVG 支持的第三方实现。

在 Android 中使用 SVG 的主要问题是:

  • SVG 文件可能非常复杂,渲染速度可能非常慢

  • 我使用的所有第三方实现都存在错误,无法正确加载或渲染某些 SVG 文件

  • 大多数第三方实现已被放弃,并且没有 似乎得到了积极的维护

我在以下文章中写了更多关于在 Android 中使用 SVG 文件和可用的第三方库的内容:

https://androidbycode.wordpress.com/2015/02/27/vector-graphics-in-android-part-1-svg/

VectorDrawable 支持 SVG 格式的子集,旨在确保快速渲染。我已经写过关于 VectorDrawable 以及如何将现有的 SVG 文件转换为 VectorDrawable here

【讨论】:

    【解决方案2】:

    虽然 android 支持 SVG

    不,它没有,除了通过 WebView 或第三方 SVG 渲染库。

    为什么我们应该将 SVG 转换为 VectorDrawble?

    欢迎您通过WebView 或第三方 SVG 渲染库展示 SVG 文件。 VectorDrawable 是一个选项;这不是必需的。

    此代码示例在 android 中显示 svg:

    Android SDK 中没有SVGParser 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-20
      • 2021-10-26
      • 2018-10-12
      • 2018-09-09
      • 2017-12-10
      • 1970-01-01
      • 2019-04-04
      • 2015-12-18
      相关资源
      最近更新 更多