目的: 我想使用ImageView优先显示SVG图像文件。
尝试1:
我正在使用svg-android库来执行此操作。
我正在逐字逐句地跟踪他们tutorial。我只是将他们的代码粘贴到我的onCreate中,从onCreate中注释掉我的应用代码。
我之前有一个闪屏,但我对此表示怀疑 无论如何干扰这个。无论如何,我只会改变 启动意图并发布更新。
我已将他们的jar添加到libs文件夹中并引用它。
结果1:
我正在测试三星Galaxy I93000(国际版)
我得到的只是一个白色的屏幕。
没有编译或运行时错误。
Logcat输出如下:
01-13 01:22:11.755: D/dalvikvm(24889): GC_FOR_ALLOC freed 52K, 7% free 12198K/12995K, paused 17ms, total 17ms 01-13 01:22:11.765: I/dalvikvm-heap(24889): Grow heap (frag case) to 17.000MB for 4642816-byte allocation 01-13 01:22:11.810: D/dalvikvm(24889): GC_CONCURRENT freed 1K, 5% free 16730K/17543K, paused 15ms+2ms, total 43ms 01-13 01:22:12.080: D/dalvikvm(24889): GC_FOR_ALLOC freed <1K, 5% free 16731K/17543K, paused 13ms, total 13ms 01-13 01:22:12.100: I/dalvikvm-heap(24889): Grow heap (frag case) to 21.928MB for 5168972-byte allocation 01-13 01:22:12.125: D/dalvikvm(24889): GC_CONCURRENT freed <1K, 4% free 21779K/22599K, paused 12ms+2ms, total 25ms 01-13 01:22:12.560: D/libEGL(24889): loaded /system/lib/egl/libEGL_mali.so 01-13 01:22:12.595: D/libEGL(24889): loaded /system/lib/egl/libGLESv1_CM_mali.so 01-13 01:22:12.600: D/libEGL(24889): loaded /system/lib/egl/libGLESv2_mali.so 01-13 01:22:12.605: D/(24889): Device driver API match 01-13 01:22:12.605: D/(24889): Device driver API version: 10 01-13 01:22:12.605: D/(24889): User space API version: 10 01-13 01:22:12.605: D/(24889): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012 01-13 01:22:12.670: D/OpenGLRenderer(24889): Enabling debug mode 0
更新1:
我尝试将显示SVG图形的活动作为清单中的主要活动。结果没有变化。
更新2:
尝试使用其他库/方式执行此操作 - ImageView with SVG Support。将回复结果。
更新3:
你知道吗,我已经看过SVG support on Android了。那里的答案并没有真正提供原生解决方案。一种解决方法是创建静态html页面,每个svg一个,引用SVG js库。这似乎根本不可维护。我会看到那些人在查看遗留代码时会诅咒。
正如您可能已经猜到的那样,上述试验并未奏效。
答案 0 :(得分:18)
您可能已经找到了解决方案,但供将来参考:
我正在测试三星Galaxy I93000(国际版)
我得到的只是一个白色的屏幕。
没有编译或运行时错误。
您可能需要为正在使用的ImageView禁用硬件加速:
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
我在svg-android的分支中遇到了同样的问题,这完全是由于硬件加速。
答案 1 :(得分:4)
好的,经过一个完整的不眠之夜,这就是我所拥有的。 :)
希望1:
* TPSVG_Android_SVG_Library: * (这就是我使用的,即我的批准印章;)
试过这个有福的人的图书馆。工作就像一个魅力。他从View扩展了他的自定义视图,因此您拥有布局的大部分基本参数。它只有一个贡献者。我有点厌恶在生产中使用它,至少在长期基础上。但对他的工作表示赞赏,非常感谢,因为它满足了我的迫切需要。
对于这个用法非常简单,我将粗略地描述它。
在onCreate中使用它:
SVGView svgView =(SVGView)this.findViewById(R.id.svgImage); SVGParserRenderer image = new SVGParserRenderer(this,R.raw.anime); svgView.setSVGRenderer(image,null); svgView.setBackgroundColor(Color.WHITE);
我使用了FrameLayout来定位它。需要lotta试验和错误,因为它没有出现在Android的WYSIWYG编辑器中。您可以使用ImageView暂时替换它并处理格式化。
问题 我还没有想到如何在运行时在此View上切换drawables(SVG)。如果有人认为 出来,请发布程序。
希望2:
的 Vectoroid: 强> 的
这个看起来很有希望。他们有一些基于矢量的应用程序以及库。我无法想象如何使用它来加载SVG drawable(似乎还没有支持)。可是等等! here在他们的博客上,他们说他们已经实施了&#34; SVG来绘制&#34;并将很快发布。耶!