我有一个自定义 View ,它表示带有多个图 block 的简单游戏板。我有一个二维数组,用于存储图 block 的当前显示图像(0 表示没有图像)。
目前在我的 onDraw()
方法中,我遍历数组并显示图 block 的图像。然而,我唯一一次不带任何参数调用 invalidate()
是在我重置电路板时。在所有其他地方,我只为需要更新的所需图 block 调用 invalidate(Rect)
。
onDraw()
的上述实现是否没有有效地绘制 View ?如果是这样,什么是更好的方法呢? (调用 invalidate(Rect) 是否也保证只更新“Rect”区域,或者这只是对 Android 的一个可能被忽略的建议?)。
感谢对此的任何澄清。
最佳答案
Is this above implementation of
onDraw()
in-efficiently drawing the view?
已经足够好了。否则,您想学习 OpenGL 以在绘图中使用硬件加速,但所有这些都取决于您的图 block 是否每帧都在变化或您有多少个图 block 。
also does invoking invalidate(Rect) guarantee updating only the 'Rect' region OR is this just a recommendation to Android that may be ignored?
它更新了 Rect
区域,事实上 Romain Guy 使用 invalidate(Rect)
作为默认的家庭启动器应用程序,以便在主屏幕需要时不更新整个屏幕更新。
关于android - onDraw() 自定义 View 的高效设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646822/