//系統所能識別的滑動的最小距離,
// 如果兩次滑動之間的距離小於這個值,則系統不會認爲你在進行滑動操作,
// 不同的設備這個值會不同
int scaledTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop();
//追蹤手指在滑動時候的速度(一段時間內手指鎖劃過的像素數)
obtain = VelocityTracker.obtain();
one.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
//相對於View左上角的座標
float x = motionEvent.getX();float y = motionEvent.getY();
//相對於View左上角的座標
float rawX = motionEvent.getRawX();float rawY = motionEvent.getRawY();
break;
case MotionEvent.ACTION_MOVE:
obtain.addMovement(motionEvent);
obtain.computeCurrentVelocity(1000);//單位毫秒
float xVelocity = obtain.getXVelocity();float yVelocity = obtain.getYVelocity();
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
//當setOnTouchListener和setOnclickListener一起使用,onTouch爲true,則不會執行onClick方法,爲false的纔會執行onClick方法。無論是true還是false,down,move,up這三個方法都會執行
//當setOnTouchListener單獨使用時,爲false的時候,只會執行down方法,不會執行move和up.只有在true的時候,三個都會執行。
return true;
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
//重置,回收
obtain.clear();
obtain.recycle();
}