8

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

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

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

2 回答 2

7

您提到的 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 的文章

于 2015-08-11T11:31:59.623 回答
2

虽然 android 支持 SVG

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

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

欢迎您通过WebView或第三方 SVG 渲染库显示 SVG 文件。VectorDrawable是一种选择;这不是一个要求。

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

Android SDK中没有SVGParser类。

于 2015-08-10T18:12:58.317 回答