android - onDraw() 自定义 View 的高效设计

标签 android

我有一个自定义 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/

相关文章:

android - 单击后退箭头时 onKeyDown 不起作用

Android Tesseract 进度回调

android - 如何即时更改 Android AnimationDrawable 动画的持续时间?

javascript - “webrtc_android”在构建时发出错误消息

android - 引用错误 : Can't find variable: Permissions and ReferenceError: Can't find variable: ImagePicker

android - 如何使用 retofit2 和 RxAndroid 取消请求

java - 在java类中获取后退点击的句柄

android - 单个进程的多个 setOnClickListener

android - 在android中以编程方式获取设备快照

android - 如何在 Android UI 中绘制圆角矩形?