MotionEvent
MotionEvent是用來(lái)描述手指觸摸屏幕的事件。當(dāng)手指觸摸屏幕后,系統(tǒng)會(huì)產(chǎn)生一系列MotionEvent并發(fā)送個(gè)合適的View。
常用事件類型有ACTION_DOWN,ACTION_MOVE和ACTION_UP。
MotionEvent中持了觸摸事件類型,位置等信息。
獲取事件左邊信息的方法:
getX/getY 獲取相對(duì)于View左上角的坐標(biāo)值
getRawX/getRawY 獲取相對(duì)于屏幕左上角的坐標(biāo)值TouchSlop
TouchSlop是一個(gè)系統(tǒng)常量,標(biāo)識(shí)系統(tǒng)所能識(shí)別的最小滑動(dòng)距離。
獲取方式,ViewConfiguration.get(getContext()).getScaledTouchSlop();
在滑動(dòng)處理中,可通過(guò)此常量對(duì)滑動(dòng)進(jìn)行一下過(guò)濾處理,可獲得更好的用戶體驗(yàn)
3.Velocity
用于追蹤手指在滑動(dòng)過(guò)程中的速度。
//在View的onTouch Event中追蹤事件的滑動(dòng)速度。
VelocityTracker velocityTracker = VelocityTracker.obtain();
velocityTracker.addMovement(enent);
//計(jì)算指定間隔時(shí)間中的速度,分水平和垂直方向上的速度。
//最終獲得的是此間隔內(nèi),手指滑過(guò)的像素值。有正負(fù)之分
velocityTracker.computeCurrentVelocity(1000);
int xVelocity = (int) velocityTracker.getXVelocity();
int yVelocity = (int) velocityTracker.getYVelocity();
//當(dāng)不需要使用時(shí),記得回收
velocityTracker.clear();
velocityTracker.recycle();