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

时间:2015-12-14 10:03:58

标签: android android-gesture

我在Activity中实现GestureDetector.OnGestureListener, 其重写的onTouchEvent是:

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

使用MotionEvent Class中的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);
}

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

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

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

但是没有任何好处。

我看过this questionthis one, more relevant to me,但我发现只有

  1. 只有部分旧手机会返回非零值
  2. 我应该自己做。
  3.   

    我使用API​​错了吗?

         

    是否有更好的替代getEdgeFlags()?

         

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

    如果有的话会有一些小问题。

0 个答案:

没有答案