2012-07-18 141 views
21

我想创建一个应用程序,它将显示某个平面图上的位置。导航通过WiFi以某种方式实现,我已经完成了,所以现在我有一个显示平面图的问题。在Android中显示SVG文件

它可能是一些矢量格式,冲浪互联网一段时间后,我已决定它必须是SVG文件。 我找到了一些解决方案,但它不适合我!

  1. Library svg-android

    有机会显示.SVG文件,而只是 “简单” 的文件。它仅适用于教程中的文件,但不适用于任何其他.svg文件(例如,您将使用Inkscape创建的其他文件)。

    所以,我决定,我会解析.svg文件,从它制作DOM,以某种方式获取对象和属性,并通过OpenGL ES绘制它。

  2. Apache Batik

    乍一看,很好的解决方案,但有一个问题。 Android有一些“本地”apache库,当我尝试用蜡染做一些事情时,它会抛出NoClassDefFoundError,因为它不是在蜡染库中搜索,而是在“本地”库中搜索。

    当然,我们可以在我们的项目中添加源代码,只需蜡染解析器为.svg文件并以某种方式进行编辑,但是有很多工作,我们可以编写我们自己的解析器。

  3. Tiny Line

    有没有试用版,但如果我们将它的工作原理为SVG文件和android see description,我们会看到,只有这些文件的光栅化,这一切。

有没有比编写自己的解析器更好的解决方案? 有没有人遇到过这个问题?

+0

另一种选择 - http://stackoverflow.com/a/30213340/3325759 – 2015-05-13 11:37:18

回答

8

我会建议使用#1。不要编写自己的解析器。这将是一个非常头痛的问题。

你的平面图必须有多详细? android-svg相当不错的支持SVG。它只是没有很好的支持过滤器或光源。你的SVG不会有他们(我希望)。

如果你不想这样做,看看四叉树。您可以渲染出一幅巨大的图像,并将其分解为四叉树格式,然后只加载所需的四边形。

+0

非常感谢您的回答! – 2012-07-18 09:42:01

+0

我不认为“android-svg”存在,它可能是“[androidsvg](https://code.google.com/p/androidsvg/)”或“svg-android”。 – Christian 2014-09-09 17:01:29

+0

我可以推荐“androidsvg”作为比“svg-android”更完整的库。 [Google代码](https://code.google.com/p/androidsvg/)(在发布后的几个月内即将离线)和[Bitbucket](https://bitbucket.org/paullebeau/androidsvg/下载)链接。 许可证列在源文件中,似乎是Apache 2.0。 – William 2015-03-13 21:49:10

4

我已经创作了SVG libaray为Android的网站是 http://www.vectoroid.com

缺少主要的是SVG弧形支持,这是目前固定的,将会在不久的将来发布。

我在找它的反馈,因为我一直在为它工作了大约一年。所以,如果你有任何请告诉...

+0

感谢您为编写此库所做的努力。我想在我的应用程序中使用您的库,但我不确定它是否符合我的要求。我想写一个有点免费的绘图应用程序,它保存用户绘制的SVG路径,并交互式地检查当前用户手指的位置,并相应地执行一些代码。你的图书馆可以吗? – 2016-01-12 16:41:57

1

我又用了另一个SVG for Android;似乎是比较新的。

GPLv3,CSS2支持,字体,文本和跨度,线性和径向渐变,SVG和SVGZ,初始过滤支持,来自资产的图像以及来自web和内联base64编码图像的图像。我尝试过的最快的。

当然,过滤器支持可能会更好,但除此之外它运行良好,甚至显示20兆字节的SVG文件。