我在应用程序中有一个自定义视图,它填充整个活动。
在大多数情况下,当我想要刷新控件时,我会调用没有任何参数的invalidate()
。
然而,在某些情况下,当我只更改控件的一小部分区域时,我会调用invalidate(Rect)
以避免重新绘制整个屏幕。这很重要,因为在这些情况下,我需要尽可能快地更新。
这似乎很好用,但是,当我在Honeycomb中启用硬件加速(即在AndroidManifest.xml中设置android:hardwareAccelerated="true"
)时,部分重绘似乎不起作用。
如果我在我的onDraw()
方法中执行Log.d("FOO", canvas.getClipBounds())
,输出只显示整个控件正在更新,而在禁用硬件加速时,我可以得到正确的区域输出。
是否有办法在使用硬件加速时使部分无效化工作?
非常感谢,Matt