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

标签 android gesture gestures gesture-recognition

我的应用需要检测简单的手势(滚动、点击、长按)和双指缩放。任何一个检测器都可以独立工作 - GestureDetector.SimpleOnGestureListener 用于点击/滚动和 ScaleGestureDetector.SimpleOnScaleGestureListener 用于缩放。问题是将两者结合起来。更具体地说,很难开始缩放,因此在 onScaleBegin 之前不会生成几个 onScroll 事件。

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

最佳答案

试试这个:

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

关于android - 如何正确组合 ScaleGestureDetector.SimpleOnScaleGestureListener 和 GestureDetector.SimpleOnGestureListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19764955/

相关文章:

Android-按下后退按钮时如何关闭进度对话框

java - 如何将AlertDialog放入静态方法中

android - Flutter - 多个手势,无需抬起手指

ios - 如何在单一 View 中添加两个 GestureRecognizer

Android 双击触发两次

c# - 将触摸手势转换为鼠标手势

java - 如何绘制路径?我遇到了一个小错误

android - 上下文操作栏样式

ios - 由 UITapGestureRecognizer 创建的单击功能在 UIButton 上不起作用

algorithm - 手势识别的HMM算法