如何正确组合ScaleGestureDetector.SimpleOnScaleGestureListener和GestureDetector.SimpleOnGestureListener?

时间:2013-11-04 09:39:24

标签: android gesture gestures gesture-recognition

我的应用需要检测简单的手势(滚动,点击,长按)和捏缩放。这两种探测器都能正常工作 - GestureDetector.SimpleOnGestureListener用于点击/滚动,ScaleGestureDetector.SimpleOnScaleGestureListener用于压缩缩放。问题是将两者结合起来。更具体地说,开始缩放缩放非常困难,因此在onScroll之前不会生成几个onScaleBegin事件。

有什么好方法可以解决这个问题吗?我能想到的唯一解决方案是在处理它们之前缓冲一些事件(事件队列),并在检测到onScroll时丢弃onTap / onScaleBegin而不进行处理。但这会引入输入延迟(我的应用已经存在,我不想让它变得更糟)。

1 个答案:

答案 0 :(得分:3)

试试这个:

@Override
public boolean onTouchEvent(MotionEvent event) {
    boolean res = mScaleGestureDetector.onTouchEvent(event);
    if (!mScaleGestureDetector.isInProgress()) {
        res = mGestureDetector.onTouchEvent(event);
    }
    return res;
}