Android上的SVG支持


Answers:


56

最完整的答案是这样的:

  • Android 2.x默认浏览器本身不支持SVG。
  • Android 3+默认浏览器确实支持SVG。

要将SVG支持添加到平台的2.x版本,您有两个基本选择:

  1. 安装功能更强大的浏览器(例如Firefox或Opera Mobile-均支持SVG)
  2. 使用可以解析SVG并将其呈现到HTML5画布的JavaScript polyfill

如果您只是想让SVG用于个人用途或一组有限(可控制)的用户,则第一种选择是可以的。如果要在不受控制的庞大用户群中使用SVG,则不是一个很好的选择。

在后一种情况下,您想使用polyfill。当今有许多JavaScript库可以使用SVG并渲染到画布上。两个示例是:

使用polyfill,您可以在所有版本的Android 2.x上的canav中渲染SVG。

有关此方法的更完整示例,请参阅此博客文章,该文章讨论使用canvg polyfill使Kendo UI DataViz图表(基于SVG)在Android 2.x上工作。希望有帮助!


您好,我想了解ImageView,我是否能够更改该svg图像运行时的​​颜色?
Shreyash Mahajan 2014年

22

有一个新的开源库,它支持加载和绘制SVG Basic 1.1文件:https : //github.com/pents90/svg-android。由于实际的绘图是由android.graphics.Picture对象本地处理的,因此性能良好。


为了不遗漏,我将在此处添加评论(如@Todd的回答中所述),Android 3+确实支持SVG。因此,如果开发人员不担心较旧的Android设备,则无需担心这些库。
monotasker 2012年

9
在我的回答中,我指的是一个使开发人员能够在其应用程序中加载和呈现SVG文件的库。Android 3+增加了对SVG的浏览器支持,但其开发人员API中支持SVG。
pents90 '02

不幸的是,这个版本对我来说不适用于Android 4.3。样本图像最终变为空白。我使用的是Wiki教程页面中的确切代码。
2013年

2
@BVB,您需要关闭硬件加速才能在Android 4.x上运行。请参阅:stackoverflow.com/questions/10384613/...stackoverflow.com/questions/8771219/...
pents90

谢谢,但是那不会在其他地方产生负面影响吗?
2013年


8

(正在开发中)有一个新的androidsvg库,它允许将svg图像直接合并到项目中。它具有定义an的优点,该anSVGImageView允许将svg直接合并到布局xml中。

最后,在android中包含svg很简单。

更多详细信息:堆栈溢出帖子


这个svg库实际上有效。svg-android及其分支没有应用我在组中为组的子级定义的样式/ css。这一个。谢谢。
domenukk 2013年




1

我知道我的解决方案有些硬核,但效果很好,不需要任何外部库(至少不需要在最终代码中),而且速度非常快。

1)仅使用现有的SVG加载库,例如svg-android-2(这是另一个答案中提到的svg-android的分支,只是具有更多功能和错误修正):https : //code.google.com / p / svg-android-2 /

2)编写一个简单的应用程序,除了加载并显示SVG图像外,别无他法。

3)修改SVG加载库,以便它打印创建Picture类的Java代码或将其保存在String变量中。

4)将以此方式获得的Java代码复制粘贴到您正在编写的应用程序中。

要获取有关此技术的更多信息并下载示例源代码,请访问我的博客:http : //androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html

您可以从以下Google Play中获得此技术的有效示例:https//play.google.com/store/apps/details?id = pl.bartoszwesolowski.svgtodrawablesample

这是使用此技术创建的商业应用程序的示例(米兰地铁地图):https : //play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan

请注意,即使放大后,地图加载的速度和外观也很漂亮。


1

签出可绘制的支持向量。Android studio具有将SVG文件转换为.XML文件的工具。

当将AppCompat与ImageView(或子类,如ImageButton和FloatingActionButton)一起使用时,您将能够使用新的app:srcCompat属性引用矢量可绘制对象(以及android:src可用的任何其他可绘制对象):

从Android支持库23.3.0开始,支持矢量可绘制对象只能通过app:srcCompat或setImageResource()加载



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.