1.设置手检测器,初始化并在activity中重写dispatchTouchEvent方法 (对WebView的手势监听重写的不是onTouchEvent,而是dispatchTouchEvent)
GestureDetector detector; //手势监测器*
detector = new GestureDetector(this)
//监听webView需要在该方法中实现,而不是重写ONTOUCHEVENT方法
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//注意这里不能用ONTOUCHEVENT方法,不然无效的
detector.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
2.对应activity需要实现implements GestureDetector.OnGestureListener 并重写系列方法
/*以下为 OnGestureListener 的方法*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override //单击
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return true;
}
@Override // 长按
public void onLongPress(MotionEvent e) {
}
}
3.在方法中进行手势判断
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
float scollX = Math.abs(e1.getX() - e2.getX());
float scollY = Math.abs(e1.getY() - e2.getY());
if (e1.getX() - e2.getX() > 200 && scollX > scollY) {//向左滑,右边显示
//TODO 实现想要做的事情,比如加载下一个url
}
if (e1.getX() - e2.getX() < -200 && scollX > scollY) {//向右滑,左边显示
//TODO 实现想要做的事情,比如加载上一个url
}
return false;
}