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