我正在创建一个需要消耗几乎任何手势的视图。为此,我创建了一个 ScaleGestureDetector 和一个 GestureDetector。我还创建了一个侦听器类,并意识到我可以让它实现我需要的每个接口;所以我做了。这对 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; }