在Android中检测多个视图上的手势

我正在制作自定义应用内键盘。 键盘是包含许多关键视图的ViewGroup 。 每个按键都需要识别手势,如点击,长按和轻扫/滑动。 如何将手势检测添加到所有按键?

所述SimpleOnGestureListener方法不触发视图传递MotionEvent ,所以在知道,如果用于所有键的单个姿势检测哪个键被按下了一些困难。

正如我所看到的,有三种选择:

  • 让键盘视图为每个键添加一个新的手势检测器/监听器(或让每个键视图实现其自己的手势检测器)。

    可能的问题:不是资源高效? 用户@pskink在这个答案中说(尽管关于与我在这里讨论的有点不同的话题):

    在父视图中执行GestureDetector而不是在子视图中,否则如果父视图有n个子视图,则需要n个检测器。

  • 让键盘为每个键添加一个OnTouchListener。 然后自己写我的手势检测代码。

    问题:这是重新发明车轮。

  • 将一个GestureDetector类实现放入OnTouchListener以便手势侦听器可以访问引用调用OnTouchListener的视图的成员变量。 这是显示这个的答案。

    可能的问题:似乎有多个视图的单个GestureDetector应该是常见的情况。 如果是这样,那么为什么我只能找到一个晦涩难懂的答案来描述如何做到这一点? 如果这种做法会成为问题,我对内存管理也不够了解。

  • 有关GestureOverlayView

    将GestureDetector设置为所有子视图的唯一答案简洁地表明:

    你可以使用GestureOverlayView来查看previus的stackoverflow帖子,了解如何使用它。

    虽然GestureOverlayView的文档很差,但从我所能收集的内容来看,它更多的是识别自定义手势(请参阅此处),而不是将相同的手势集添加到多个视图。

    链接地址: http://www.djcxy.com/p/16217.html

    上一篇: Detecting gestures on multiple views in Android

    下一篇: Android onFling MotionEvent not change