Github有个开源项目:GitHub - KobeKomi/Slider: 可以滑动页面的项目
开始:
//手指上下滑动时的最小速度
private static final intYSPEED_MIN=1000;
//手指向右滑动时的最小距离
private static final intXDISTANCE_MIN=130;
//手指向上滑或下滑时的最小距离
private static final intYDISTANCE_MIN=100;
//记录手指按下时的横坐标。
private floatxDown;
//记录手指按下时的纵坐标。
private floatyDown;
//记录手指移动时的横坐标。
private floatxMove;
//记录手指移动时的纵坐标。
private floatyMove;
//用于计算手指滑动的速度。
privateVelocityTrackermVelocityTracker;
//字体、屏幕亮度设置
privateRelativeLayoutrlFontSet;
@Override
public booleandispatchTouchEvent(MotionEvent event) {
createVelocityTracker(event);
switch(event.getAction()) {
caseMotionEvent.ACTION_DOWN:
xDown= event.getRawX();
yDown= event.getRawY();
break;
caseMotionEvent.ACTION_MOVE:
xMove= event.getRawX();
yMove= event.getRawY();
//滑动的距离
intdistanceX = (int) (xMove-xDown);
intdistanceY = (int) (yMove-yDown);
//获取顺时速度
intySpeed = getScrollVelocity();
//关闭Activity需满足以下条件:
//1.x轴滑动的距离>XDISTANCE_MIN
//2.y轴滑动的距离在YDISTANCE_MIN范围内
//3.y轴上(即上下滑动的速度)
if(distanceX >XDISTANCE_MIN&& (distanceY -YDISTANCE_MIN) && ySpeed
if(wvNewsContent.canGoBack()) {
wvNewsContent.goBack();// goBack()表示返回WebView的上一页面
return true;
}else{
finish();
}
}
break;
caseMotionEvent.ACTION_UP:
recycleVelocityTracker();
break;
default:
break;
}
return super.dispatchTouchEvent(event);
}
/**
*创建VelocityTracker对象,并将触摸界面的滑动事件加入到VelocityTracker当中。
*
*@paramevent
*/
private voidcreateVelocityTracker(MotionEvent event) {
if(mVelocityTracker==null) {
mVelocityTracker= VelocityTracker.obtain();
}
mVelocityTracker.addMovement(event);
}
/**
*回收VelocityTracker对象。
*/
private voidrecycleVelocityTracker() {
mVelocityTracker.recycle();
mVelocityTracker=null;
}
/**
*@return滑动速度,以每秒钟移动了多少像素值为单位。
*/
private intgetScrollVelocity() {
mVelocityTracker.computeCurrentVelocity(1000);
intvelocity = (int)mVelocityTracker.getYVelocity();
returnMath.abs(velocity);
}