手势识别和webview很多时候会出现冲突,一般我们用于接收GestureDetector对象的方法是OnTouchevent();,而在View组件占用了屏幕空间之后,这个方法就无效了,只有换成 dispatchTouchEvent方法才有效!
GestureDetector detector = new GestureDetector(this,this);
需要重写的方法
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
detector.onTouchEvent(ev);
webView.onTouchEvent(ev);//这几行代码也要执行,将webview载入MotionEvent对象一下,况且用载入把,不知道用什么表述合适
return super.dispatchTouchEvent(ev);
}
下面是滑动的识别,可以记录一下
//滑动
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(e1!=null){
float beginY = e1.getY();
float endY = e2.getY();
if(beginY-endY>60&&Math.abs(velocityY)>0){ //上滑
layout.setVisibility(View.GONE);
}else if(endY-beginY>60&&Math.abs(velocityY)>0){ //下滑
layout.setVisibility(View.VISIBLE);
}
}
return false;
}