用來追蹤觸摸事件(flinging事件和其餘手勢事件)的速率。用obtain()函數來得到類的實例,用addMovement(MotionEvent)函數將motion event加入到VelocityTracker類實例中,當你使用到速率時,使用computeCurrentVelocity(int)初始化速率的單位,並得到當前的事件的速率,而後使用getXVelocity() 或getXVelocity()得到橫向和豎向的速率。 ide
VelocityTracker.computeCurrentVelocity(int units, float maxVelocity) 函數
計算那些已經發生觸摸事件點的當前速率。這個函數只有在你須要獲得速率消息的狀況下才調用,由於使用它須要消耗很大的性能。經過getXVelocity()和getYVelocity()得到橫向和豎向的速率。 性能
參數:
units: 你使用的速率單位.1的意思是,以一毫秒運動了多少個像素的速率, 1000表示 一秒時間內運動了多少個像素。
spa
maxVelocity: 這個方法能計算出事件的最大速率。他的值和上面的units的值具備同樣的單位,這個值必須是正數。 事件
private VelocityTracker mVelocityTracker;//生命變量
//在onTouchEvent(MotionEvent ev)中
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();//得到VelocityTracker類實例
}
mVelocityTracker.addMovement(ev);//將事件加入到VelocityTracker類實例中
//判斷當ev事件是MotionEvent.ACTION_UP時:計算速率
final VelocityTracker velocityTracker = mVelocityTracker;
// 1000 provides pixels per second
velocityTracker.computeCurrentVelocity(1, (float)0.01); //設置maxVelocity值爲0.1時,速率大於0.01時,顯示的速率都是0.01,速率小於0.01時,顯示正常
Log.i("test","velocityTraker"+velocityTracker.getXVelocity());
velocityTracker.computeCurrentVelocity(1000); //設置units的值爲1000,意思爲一秒時間內運動了多少個像素
ci
Log.i("test","velocityTraker"+velocityTracker.getXVelocity()); get