Github有個開源項目:GitHub - KobeKomi/Slider: 可以滑動頁面的項目
開始:
//手指上下滑動時的最小速度
private static final intYSPEED_MIN=1000;
//手指向右滑動時的最小距離
private static final intXDISTANCE_MIN=130;
//手指向上滑或下滑時的最小距離
private static final intYDISTANCE_MIN=100;
//記錄手指按下時的橫坐標(biāo)呻澜。
private floatxDown;
//記錄手指按下時的縱坐標(biāo)遏匆。
private floatyDown;
//記錄手指移動時的橫坐標(biāo)踩萎。
private floatxMove;
//記錄手指移動時的縱坐標(biāo)包斑。
private floatyMove;
//用于計算手指滑動的速度。
privateVelocityTrackermVelocityTracker;
//字體、屏幕亮度設(shè)置
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();
//關(guān)閉Activity需滿足以下條件:
//1.x軸滑動的距離>XDISTANCE_MIN
//2.y軸滑動的距離在YDISTANCE_MIN范圍內(nèi)
//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);
}
/**
*創(chuàng)建VelocityTracker對象覆获,并將觸摸界面的滑動事件加入到VelocityTracker當(dāng)中率拒。
*
*@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);
}