android - 我可以在其中存储点以加快绘制速度的可绘制对象?

标签 android arrays canvas drawing

我正在设计一个自定义 View ,它是一个 X/Y 图。这是一个随时间向左滚动的移动图表,新的 Y 值以每秒 10 个的速度不断出现。

我已经能够让它与整数数组一起工作,其中数组索引是 X 值,整数值是 Y 值,但这看起来效率低得可怕(因为每次都需要重新绘制,我必须循环 800 多次才能绘制图表)。然后我们每秒重复 10 次。呸。

谁能想到一个可绘制的对象,我可以向其绘制点并执行某种滚动变换,然后每次只绘制新的点,而不是整个 Canvas ?

还有其他想法吗?

谢谢!

最佳答案

您可以使用 Canvas.drawPoints() 并让 Canvas 在 native 代码中完成工作:http://d.android.com/reference/android/graphics/Canvas.html#drawPoints(float[],%20int,%20int,%20android.graphics.Paint)你也可以聪明地从你知道在屏幕上的第一个点的偏移量开始。此外,要进行滚动,您必须以某种方式重新绘制整个 Canvas。您也可以使用离屏位图来耍花招。

关于android - 我可以在其中存储点以加快绘制速度的可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535955/

相关文章:

linux - 为什么在 Linux/Ubuntu 中支持硬件加速 Canvas (html) 需要这么长时间? (火狐/ Chrome )

使用指针在结构内创建一个可变长度的 int 数组

javascript - 专门更改笔触不透明度但不更改 Canvas 上的颜色

java - 使用循环具有相同名称的不同对象

java - 错误: cannot find symbol method setSupportImageTintList(ColorStateList)

arrays - 如何将VBA一维数组输出从水平更改为垂直?

c++ - 创建对象的动态数组

javascript - 使用 HTML+JS 在 Canvas 中绘制 3D

android - 获取 Activity 经理的状态

android - 在android中找不到列item_name