我试图在活动的整个区域检测到 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 )检测未被触发。
我希望我已经解释了我的问题:如何检测活动的整个表面的手势,以完成简单的滑动手势?
许多坦克。
答案 0 :(得分:1)
您可以使用GestureOverlayView。这是GestureOverlayView的一个很好的入门资源。您也可以查看此SO question。
基本上使用此应用程序必须使用视图" GestureOverlayView"然后将其他视图放在此视图中。您的活动必须实现界面" OnGesturePerformedListener"如果检测到手势,那么" onGesturePerformedListener"方法被称为。
希望这会有所帮助。古德勒克!