使用Canvas.clipPath时,请使用hardwareAcceleration标志。

3

我正在将一个为Galaxy Tab 1制作的项目移植到Galaxy Tab 2上,但apk运行缓慢,因此我在新应用程序的AndroidManifest.XML中添加了hardwareAccelerated标志。

但是运行时出现以下错误:

java.lang.UnsupportedOperationException
     at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:287)
     at br.com.iba.view.PageCurlView.drawCurl(PageCurlView.java:284)
     at br.com.iba.view.PageCurlView.onDraw(PageCurlView.java:353)
     at android.view.View.draw(View.java:9291)

1
这篇关于硬件加速的文章可能会对您有所帮助。 - kaka
谢谢,看起来不错。但我提到的问题是一个包含所有逻辑和视图的自定义视图,我不能仅为其禁用硬件加速。 - Marcos Vasconcelos
2个回答

11

我在我的项目中遇到了与ImageView不支持硬件加速类似的问题。我通过以下代码解决了这个问题:

mImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

对我而言,它起作用了。


禁用它可以解决问题,但是由于没有使用硬件加速,运行速度会变慢。 - Marcos Vasconcelos

3
为了避免与sdk版本相关的问题,您应该使用以下内容:
if (android.os.Build.VERSION.SDK_INT >= 11) {
    mapView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
} 

我遇到了 java.lang.NoSuchMethodError: setLayerType 错误。

这篇文章只是为了澄清事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接