VelocityTracker 監控速度!!!

用來追蹤觸摸事件(flinging事件和其他手勢事件)的速率。

用obtain()函數來獲得類的實例,

用addMovement(MotionEvent)函數將motion event加入到VelocityTracker類實例中,

當你使用到速率時,使用computeCurrentVelocity(int)初始化速率的單位,並獲得當前的事件的速率,

然後使用getXVelocity() 或getXVelocity()獲得橫向和豎向的速率。

 

VelocityTracker.computeCurrentVelocity(int units, float maxVelocity)

        計算那些已經發生觸摸事件點的當前速率。這個函數只有在你需要得到速率消息的情況下才調用,因爲使用它需要消耗很大的性能。通過getXVelocity()和getYVelocity()獲得橫向和豎向的速率。

參數:
  units:  你使用的速率單位.1的意思是,以一毫秒運動了多少個像素的速率, 1000表示 一秒時間內運動了多少個像素。

       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,意思爲一秒時間內運動了多少個像素

Log.i("test","velocityTraker"+velocityTracker.getXVelocity());

發佈了30 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章