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