VelocityTracker監控速度

 用來追蹤觸摸事件(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

相關文章
相關標籤/搜索