Android:有效地滚动 Canvas 的内容?

标签 android canvas

我想画一个实时更新的图(从右边增长)。我能想到的最有效的方法是复制 x[0 .. width-2] 左边 1 个像素的所有内容,然后在 x[width-1] 处绘制新值。

我对 Android 没有多少经验,但据我所知,Canvas 根本不对其内容进行操作。每次都需要重绘整个屏幕吗?这涉及缩放和平滑,所以我担心它会很慢。

我是否应该绘制一个 byte[][] 然后使用它来绘制到屏幕上(每次都将缓冲区的内容向左移动)?

最佳答案

如果您的图形是有界的,请尝试将其全部渲染到一个图像中,然后将相关部分从该图像传输到您的 Canvas 中。尽量避免实际“移动”缓冲区中的像素,因为这可能会在您的读写之间引入依赖关系,并可能真正降低性能。从一个缓冲区复制到另一个缓冲区并交替将哪个缓冲区传送到屏幕实际上可能更好。最后,如果您最终不得不手动处理像素,请确保以行而不是列的形式在图像上运行,并且您从行的开头开始以帮助缓存。

关于Android:有效地滚动 Canvas 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/930402/

相关文章:

java - 有没有一种方法可以使用多个 LWJGL 上下文

JavaPoet + Android Studio "addModifiers(Modifier) cannot be applied to Modifier"

android 在代码中添加布局

javascript - 如何更改两个div的内容 - canvas

html - 如何将 Canvas 的一部分捕获到位图

javascript - 使用单击、鼠标移动和单击绘制矩形

android - 如何在锁定屏幕上显示 gcm 推送通知?

android - 对话问题 : requestFeature() must be called before adding content

android - 覆盖 Android View 我的航向 : TextView

javascript - 从保存的 base64 恢复时 Firefox 绘制空白 Canvas