1. 网络上查找问题答案是:
定义一个MotionEvent对象,在ondown里面赋值
private MotionEvent mLastOnDownEvent = null;
@Override
public boolean onDown(MotionEvent arg0) {
mLastOnDownEvent=arg0;
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(null==e1){
e1 = mLastOnDownEvent;
}
if (e1==null || e2==null){
return false;
}
}
这个解决方案放在我的代码里没有解决问题。
2. 通过打印LOGCAT发现onTouchEvent和onInterceptTouchEvent的调用顺序有一定的特殊性,所以把
gestureDetector.onTouchEvent(event);
分别放到上面两个回调方法里,问题得到解决!
问题的根本原因还不清楚。