我在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 question和this one, more relevant to me,但我发现只有
我使用API错了吗?
是否有更好的替代getEdgeFlags()?
即使onDown返回false,在logcat中,我仍然可以看到其他
GestureDetector.OnGestureListener
被解雇的方法,为什么?
如果有的话会有一些小问题。