我想绘制(4或5)实时图表,在15分钟内可视化大量数据(每30ms一个新值)。我正在使用Path,但是当我想要显示超过20000个值并翻译画布并且它每秒都变得更糟时它似乎工作得非常慢。我也尝试过使用drawLine但它根本不能流畅地工作。
有没有人对Path的解决方案有什么想法?或者也许我做错了什么?我当前的解决方案是:我在开始时初始化Path,然后在每次获得新值时添加一个新行,然后我翻译画布。
答案 0 :(得分:3)
无论你使用什么,显示一个20 000个值的路径都可能会很慢,即使在OpenGL中也是如此,只需要将大量数据发送到图形芯片来绘制......
执行它的“正确”方法(性能方面)可能是尽可能多地缓存内容,并仅绘制需要绘制的内容。例如,您可以绘制前N个点的位图,然后仅使用下一个M点的路径(并绘制前一个点的位图)。绘制位图非常快。所以有一段时间,你可以刷新你的位图(这会花费更多的时间),然后绘制其余的点。
您还可以决定使用更短的路径:您真的需要20 000个值吗?难道你不能将5分或5分10分(甚至更多分)?目前,屏幕最多只有1280像素宽......
答案 1 :(得分:3)
是否在每个onDraw()中绘制所有内容?这就是为什么它很慢。首先,没有人能够每隔30ms看到变化。因此,请继续将更新绘制到缓存位图中,然后调用invalidate()。然后在onDraw()中将该位图复制到画布上。
答案 2 :(得分:0)
无论怎样,用画布绘制超过20000行都会很慢。我敢打赌,你必须在这个上使用openGL。此链接可能会有所帮助:http://obviam.net/index.php/opengl-es-with-android-switching-from-canvas-to-opengl/