首页 文章

整个Activity上的OnTouchListener

提问于
浏览
2

我正试图在我的活动的整个区域检测到 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),则不会触发检测 .

我希望我已经解释了我的问题: how I can detect gesture on the entire surface 的Activity,要完成一个简单的滑动手势?

很多坦克 .

1 回答

  • 1

    你可以使用GestureOverlayView . 这是GestureOverlayView的一个很好的入门资源 . 你也可以看看这个SO question .

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

    希望这可以帮助 . 祝好运!

相关问题