使用Canvas.clipPath的硬件加速标志

时间:2011-09-13 11:46:33

标签: android android-3.0-honeycomb opengl-es-2.0 android-canvas

我正在为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)

2 个答案:

答案 0 :(得分:11)

我在使用ImageView的项目中遇到了类似的问题,它不支持硬件加速。我用这段代码规避了这个问题:

mImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

它适用于我。

答案 1 :(得分:3)

要防止与sdk版本相关的问题,您应该使用:

if (android.os.Build.VERSION.SDK_INT >= 11) {
    mapView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
} 

我得到java.lang.NoSuchMethodError: setLayerType

这篇文章仅用于澄清事情。