gpt4 book ai didi

android - 一个 OnGestureListener 对象可以处理两个 GestureDetector 对象吗?

转载 作者:行者123 更新时间:2023-11-29 15:31:08 25 4
gpt4 key购买 nike

我正在创建一个需要消耗几乎所有手势的 View 。为此,我创建了一个 ScaleGestureDetector 和一个 GestureDetector。我还创建了一个监听器类,并意识到我可以让它实现我需要的每个接口(interface);所以我做了。这对 OnGestureListener 和 OnDoubleTapListener 完全有意义,因为它们来自同一个类,但是:

  • ScaleGestureDetector 是否需要自己的监听器类?
  • 如果它对同一个类感到满意,它会期待自己的对象吗?
  • 相反,我是否需要对两个检测器使用同一个监听器?

实验证实了以下内容:

  • 您确实可以使用一个监听器类,但是
  • 如果 ScaleGestureDetector 和 GestureDetector 使用相同的事件,它们可能会互相干扰。然而
  • 似乎您可以通过始终首先调用比例检测器然后在运行常规检测器之前检查其 isInProgress() 方法来防止这种相互厌烦:

    public boolean onTouchEvent(MotionEvent event) {
    //let the ScaleGestureDetector try first
    mScaleDetector.onTouchEvent(event);
    //if isInProgress() returns true then it's consuming the event
    if(mScaleDetector.isInProgress()) return true;
    //if isInProgress() returns false it isn't consuming the event
    //it's therefore safe to pass it to the regular detector
    mPrimaryDetector.onTouchEvent(event);
    return true;
    }

最佳答案

要确定 MotionEvent 是否为多点触控事件,只需使用 MotionEvent.getPointerCount() > 1。所以我认为下面的代码可以很好地工作:

public boolean onTouchEvent(MotionEvent event) {
if (event.getPointerCount() > 1) {
mScaleDetector.onTouchEvent(event);
} else {
mDetector.onTouchEvent(event);
}
return true;
}

关于android - 一个 OnGestureListener 对象可以处理两个 GestureDetector 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6599329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com