整个Activity上的OnTouchListener

我正在尝试检测整个活动区域的onFling事件。 要做到这一点我:

1)设置GestureDetectorCompat:

private GestureDetectorCompat gDetect;

2)在OnCreate初始化探测器:

gDetect = new GestureDetectorCompat(this, new GestureListener());

3)重写onTouchEvent:

@Override
public boolean onTouchEvent(MotionEvent event) {
    gDetect.onTouchEvent(event);
    return super.onTouchEvent(event);
}

4)创建GestureListener类:

class GestureListener extends GestureDetector.SimpleOnGestureListener {

    @Override
    public boolean onDown(MotionEvent event) {
        return true;
    }

    @Override
    public boolean onFling(MotionEvent event1, MotionEvent event2,
                float velocityX, float velocityY) {
        Log.e(null, "onFling: " + event1.toString() + event2.toString());
        return super.onFling(event1, event2, velocityX, velocityY);
    }

}

它可以工作,但它在我的UI中没有任何其他视图的部分检测onFling手势。 所以,如果我在空白区域滑动,它会起作用,如果我在另一个视图(例如ScrollView或LinearLayout)的活动部分中滑动,则不会触发检测。

我希望我已经解释了我的问题: 我如何检测活动的整个表面上的手势 ,以完成一个简单的滑动手势?

许多坦克。


您可以使用GestureOverlayView。 这是GestureOverlayView的一个很好的入门资源。 你也可以看看这个SO问题。

基本上使用这个你的应用程序必须使用视图“GestureOverlayView”,并将其他视图放在这个视图中。 你的活动必须实现接口“OnGesturePerformedListener”,如果检测到手势,则调用“onGesturePerformedListener”方法。

希望这可以帮助。 祝你好运!

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

上一篇: OnTouchListener on entire Activity

下一篇: Disable Android scrollview, but still allow taps on buttons in the scroll view