【发布时间】:2011-04-22 20:06:46
【问题描述】:
Android 是否支持 SVG?有什么例子吗?
【问题讨论】:
-
截至 2012 年 10 月 5 日,接受的答案不正确
Android 是否支持 SVG?有什么例子吗?
【问题讨论】:
最完整的答案是这样的:
要将 SVG 支持添加到平台的 2.x 版本,您有两个基本选择:
如果您只是想让 SVG 用于个人用途或有限(可控)的用户集,则第一个选项是可以的。如果您想在面向不受控制的庞大用户群的同时使用 SVG,这不是一个很好的选择。
在后一种情况下,您想使用 polyfill。现在有许多 JavaScript 库可以使用 SVG 并渲染到画布上。两个例子是:
使用 polyfill,您可以在所有版本的 Android 2.x 上的 Canavs 中渲染您的 SVG。
有关此方法的更完整示例,您可以参考this blog post that discusses the use of the canvg polyfill 以使 Kendo UI DataViz 图表(基于 SVG)在 Android 2.x 上工作。希望对您有所帮助!
【讨论】:
有一个新的开源库支持加载和绘制 SVG Basic 1.1 文件:https://github.com/pents90/svg-android。性能很好,因为实际绘图由 android.graphics.Picture 对象本地处理。
【讨论】:
目前,包括我在内的一些人独立工作。
您可以在这些文章中找到有效的解决方案:
Android. ImageView with SVG Support.
Android ImageView and Drawable with SVG support
【讨论】:
有一个新库(正在积极开发中)androidsvg,它允许将 svg 图像直接合并到项目中。它具有定义SVGImageView 的优点,它允许将svg 直接合并到布局xml 中。
最后,在 android 中包含 svg 很简单。
更多详情:Stack Overflow post
【讨论】:
Android 支持矢量绘图:https://developer.android.com/reference/android/graphics/drawable/VectorDrawable.html
还有一个 Android SVG 到 VectorDrawable 转换器: http://inloop.github.io/svg2android/
【讨论】:
我简要了解了https://code.google.com/p/androidsvg/。到目前为止显示了我扔给它的所有 svg 文件。看起来很有希望。
【讨论】:
我刚刚为我自己的 TPSVG 库收集了一个 Github 存储库和示例存储库,这些库最初是专门为我的应用程序创建的。
【讨论】:
我知道我的解决方案有点硬核,但效果很好,不需要任何外部库(至少在您的最终代码中不需要)并且速度非常快。
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
注意地图加载速度有多快以及它看起来有多漂亮,即使在放大的情况下也是如此。
【讨论】:
查看Support vector drawable。 Android Studio 有一个工具可以将 SVG 文件转换为 .XML 文件。
将 AppCompat 与 ImageView(或 ImageButton 和 FloatingActionButton 等子类)一起使用时,您将能够使用新的 app:srcCompat 属性来引用矢量可绘制对象(以及 android:src 可用的任何其他可绘制对象):
从 Android 支持库 23.3.0 开始,支持矢量可绘制对象只能通过 app:srcCompat 或 setImageResource() 加载
【讨论】:
Firefox for Android 支持 SVG。
【讨论】:
Opera Mobile for Android 支持 svg,Opera Mini 支持静态 svg 内容。
【讨论】: