【问题标题】:I get just blank white screen while using svg-android使用 svg-android 时我得到的只是空白屏幕
【发布时间】:2023-03-14 18:39:01
【问题描述】:

目的: 我想最好使用 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 库。这似乎根本无法维护。我会是人们看到遗留代码时诅咒的那个人。

正如您可能已经猜到的那样,上述试验的效果并不好。

【问题讨论】:

  • 您使用的是教程中的 svg 文件还是您自己的自定义 svg?
  • 教程中的 svg 文件
  • 天啊!第二种方式的前提简直就是杀气腾腾!只是为了显示 SVG 付出了这么多努力?人们应该有更好的选择,不应该在那里吗?
  • @Dheeraj Bhaskar,有什么更新吗?我正在尝试使用 svg-android lib,但没有成功
  • 我已经有一段时间没有使用这个库了@cooervo 我现在不太可能提供帮助。

标签: android svg imageview svg-android


【解决方案1】:

您可能已经找到了解决方案,但供将来参考:

我在三星galaxy I93000(国际版)上测试

我得到的只是一个白屏。

没有编译或运行时错误。

您可能需要为正在使用的 ImageView 禁用硬件加速:

imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

我在使用 svg-android 的一个分支时也遇到了同样的问题,这完全是由于硬件加速造成的。

【讨论】:

  • 谢谢znggo。我在这个项目中使用了 PNG,它提供了更多的控制权。当我再次需要时我会尝试这个,如果其他人可以确认这是解决它,我会将它标记为已接受。
  • 这实际上是他问题的正确答案
  • 是的,您真的需要将此标记为正确答案。我想知道导致它失败的硬件加速是什么?对性能有何影响?
  • 我自己没有测试过这个,但我会接受你的回答,因为它似乎对其他一些人有用:)
  • 曼恩,你是英雄。
【解决方案2】:

好的,经过一个完整的不眠之夜,这就是我所拥有的。 :)

希望 1:

*TPSVG_Android_SVG_Library:*这是我使用的,即我的批准印章;))

试过这个受祝福的人的图书馆。像魅力一样工作。他从 View 扩展了他的自定义视图,因此您拥有大部分用于布局的基本参数。它只有一个贡献者。我有点反对在生产中使用它,至少在长期的基础上。但对他的工作表示敬意,非常感谢,因为它满足了我的迫切需要。

这个用法很简单,谁来粗略描述一下。

  • 以 zip 格式下载 repo 并将其导入 eclipse
  • 将其作为库项目添加到您的项目中(项目属性 -> Android)
  • 在 onCreate 中像这样使用它:

    SVGView svgView = (SVGView)this.findViewById(R.id.svgImage); SVGParserRenderer 图像 = 新的 SVGParserRenderer(this, R.raw.anime); svgView.setSVGRenderer(image, null); svgView.setBackgroundColor(Color.WHITE);

  • 我使用了 FrameLayout 来定位它。需要大量试验和错误,因为这不会出现在 Android 的 WYSIWYG 编辑器中。您可以暂时将其替换为 ImageView 并处理格式。

  • 此标签中使用的任何不属于 View 类的参数都会导致编译错误

问题:我还没有完全弄清楚如何在运行时在此视图上切换可绘制对象 (SVG)。如果有人认为 出来,请把过程贴出来。

希望 2:

Vectoroid:

这个看起来很有希望。他们有一些基于矢量的应用程序以及库。我不太清楚如何使用它来加载 SVG 可绘制对象(似乎还不支持)。可是等等! here 在他们的博客上他们说他们已经实现了“SVG to drawable”并将很快发布。耶!

【讨论】:

  • @arttronics 我绝对想要更多的答案和一个可靠的答案。所以这将只是另一个答案。因此,我不会很快接受这个:)。关于“希望1”的用法,您究竟想知道什么?手续?
  • @arttronics 添加了我遵循的程序。这有帮助吗? :)
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多