【问题标题】:SVG file run fine in Emulator but Gives error in Real Device?SVG 文件在模拟器中运行良好,但在真实设备中出现错误?
【发布时间】:2014-02-09 02:45:48
【问题描述】:

我在我的项目中使用 SVG 文件来显示图像。它在模拟器中运行良好,但在真实设备中出现错误。

错误如下:

E/AndroidRuntime(23215): java.lang.UnsupportedOperationException
E/AndroidRuntime(23215): at android.view.GLES20Canvas.drawPicture(GLES20Canvas.java:911)
E/AndroidRuntime(23215):at android.graphics.drawable.PictureDrawable.draw(PictureDrawable.java:73)

这背后的原因是什么?

编辑:解决方案

imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

将此行添加到您的代码中。

【问题讨论】:

  • 查看这个类似问题的答案。 stackoverflow.com/questions/18356098/…
  • 还有一件事是“如果在 SVG 文件中,单行中有 4 个像网格布局这样的图像,我在解析 SVG 时只想选择 2 个图像”解决方案是什么? @BigBadaboom
  • 我不明白你在问什么。最好先提出一个新问题,以便进一步解释。
  • @BigBadaboom:我添加了一个新问题.. 看看它stackoverflow.com/questions/18713383/…

标签: android svg


【解决方案1】:

我没有使用 ImageViews,而是将 SVG 放在图片中。我将 Picture 放在一个自定义 PictureHolder 类中,该类赋予 Picture x 和 y 浮点值。然后我使用 drawPicture() 将图片放在画布上。我无法让imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 解决方案工作。使用相同的逻辑,我在 AndroidManifest 中关闭了整个应用程序的硬件加速。

<application
    android:hardwareAccelerated="false"

不理想,但它对我有用,没有明显的性能损失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多