【发布时间】:2012-03-25 06:32:49
【问题描述】:
我的应用程序允许用户通过捕获和处理触摸事件在屏幕上绘图。此外,我的应用程序使用了 Canvas.drawPicture 和其他一些不受硬件加速支持的方法。
在某些 ICS 设备上,有一个选项可以在设置中强制硬件加速:“强制 gpu 渲染,在应用程序中使用 2d 硬件加速”。启用此功能后,我的应用程序崩溃并出现错误:android.view.GLES20Canvas.drawPicture(GLES20Canvas.java:895)。因此,我在使用此方法的视图上明确禁用了硬件加速:View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
但是,以这种方式禁用硬件加速会影响我的绘图性能,绘图变得“不稳定”,好像生成的 MotionEvent.ACTION_MOVE 较少。这发生在所有 3.0+ 设备上,无论“强制加速”设置是否打开。
所以,我认为 View 的 LayerType 中有一些东西在帮助我绘图,而当我调用 View.setLayerType(...) 时,它就丢失了。在我致电 View.setLayerType(...) 之前,View.getLayerType() 的计算结果为 LAYER_TYPE_NONE。
关于如何显式阻止硬件加速同时保留帮助我的触摸输入的任何建议?
【问题讨论】:
-
我没有这样的建议,但你可能会report this as a bug,记录的避免硬件加速的方法有这个副作用。
标签: android