如何检测Android手机上的边缘滑动以操纵触摸行为?

bha*_*rat 5 android android-gesture

GestureDetector.OnGestureListener在 Activity 中实现,其覆盖的 onTouchEvent 是:

public boolean onTouchEvent(MotionEvent event) {
       //gestureDetector is new GestureDetector(this,this) in Activity's onCreate()
       this.gestureDetector.onTouchEvent(event);
       return super.onTouchEvent(event);
    }
Run Code Online (Sandbox Code Playgroud)

使用 MotionEvent 类中的 getEdgeFlags 进行边缘检测,如下所示:

 @Override
public boolean onDown(MotionEvent e) {
    final int edgeInfo = e.getEdgeFlags();
    return ((edgeInfo == MotionEvent.EDGE_LEFT) || (edgeInfo == MotionEvent.EDGE_RIGHT)) ||
            (edgeInfo == MotionEvent.EDGE_BOTTOM);
}
Run Code Online (Sandbox Code Playgroud)

但是 onDown 总是返回 false。我也试过改变

final int edgeInfo = e.getEdgeFlags();
final int edgeInfo = e.getAction() & e.getEdgeFlags();

以及final int edgeInfo = e.getActionMasked() & e.getEdgeFlags();以防万一。

却无济于事。

我看过这个问题这个问题,与我更相关,但我发现只有

  1. 只有一些旧手机返回非零值
  2. 我应该自己做。

我使用 API 错了吗?

有没有更好的替代 getEdgeFlags() 的方法?

即使 onDown 返回 false,在 logcat 中,我仍然可以看到其他GestureDetector.OnGestureListener被解雇的方法,为什么?

如果有的话,一个小片段会有所帮助。