使用surfaceview进行多点触控绘图

时间:2011-06-14 16:33:49

标签: android multi-touch surfaceview

在过去,我写了一个应用程序,可以画两行。我所做的是创建两个向量,一个用于指针ID 0,另一个用于指针ID 1(因此其他任何内容都被忽略)。我会缓冲要在我的onTouch方法中绘制的点,然后在我的表面绘制方法中绘制两条单独线条的线条。我同步了代码的这些部分,以便UI线程和图形线程不会互相嘲笑。这很好。

现在我想做的是相同的,但接触次数不限。由于我有无限的触摸,并且屏幕上有任意随机数量的指针ID,我将无法简单地为多个触摸设置矢量,因为我不知道有多少触摸。

使用各种指针ID缓冲多个触摸的好方法是什么,以便我可以绘制它们?

也许有一个多点触控绘制应用程序,我可以用作参考?

谢谢,

1 个答案:

答案 0 :(得分:2)

一种解决方案可以是使用整数作为键(pointerIds)和路径作为对象的映射。在触摸方面,在TOUCH_DOWN上启动路径,将其添加到地图,然后每次移动时访问它。在up,你可以将它从地图中删除并“提交”到一个通用的路径列表,独立于初始的pointerId(或者你可以将原始的pointerId存储在路径中)。

所以基本上,在绘制它们时,将路径保存在使用pointerId索引的地图中,一旦完成,只需将它们保存在全局列表中即可。