带webView的Activity中实现监听左右滑动

来源:互联网 发布:cisco 端口镜像 编辑:程序博客网 时间:2024/05/22 23:30

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 的方法*/@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {    return false;}@Overridepublic boolean onDown(MotionEvent e) {    return false;}@Overridepublic void onShowPress(MotionEvent e) {}@Override //单击public boolean onSingleTapUp(MotionEvent e) {    return false;}@Overridepublic 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;
}

1 0
原创粉丝点击