【问题标题】:OnTouchListener on entire Activity整个 Activity 上的 OnTouchListener
【发布时间】:2014-11-20 19:29:28
【问题描述】:

我正在尝试在我的 活动 的整个区域检测 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);
    }

}

它有效,但它检测到 onFling 手势 ONLY 在我的 UI 部分没有任何其他视图。因此,如果我在空白区域滑动它可以工作,如果我在 activity 的一部分中滑动另一个视图(例如 ScrollViewLinearLayout ) 未触发检测。

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

许多坦克。

【问题讨论】:

标签: android swipe gesture touch-event


【解决方案1】:

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

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

希望这会有所帮助。祝你好运!

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多