3

我在我的项目中使用 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);

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

4

1 回答 1

0

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

<application
    android:hardwareAccelerated="false"

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

于 2014-02-08T18:45:48.077 回答