整个Activity上的OnTouchListener

时间:2014-09-25 21:34:14

标签: android swipe gesture ontouchevent

我试图在活动的整个区域检测到 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 手势 ONLY 。因此,如果我在空白区域中滑动它是有效的,如果我在活动的一部分中滑动,那里是另一个视图(例如 ScrollView LinearLayout )检测未被触发。

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

许多坦克。

1 个答案:

答案 0 :(得分:1)

您可以使用GestureOverlayView。这是GestureOverlayView的一个很好的入门资源。您也可以查看此SO question

基本上使用此应用程序必须使用视图" GestureOverlayView"然后将其他视图放在此视图中。您的活动必须实现界面" OnGesturePerformedListener"如果检测到手势,那么" onGesturePerformedListener"方法被称为。

希望这会有所帮助。古德勒克!