標籤:android des style blog class code
參考資料:http://blog.jrj.com.cn/4586793646,5298605a.html 感謝這位兄弟!
android.view.VelocityTracker主要用跟蹤觸控螢幕事件(flinging事件和其他gestures手勢事件)的速率,為up之後做一些效果用的。
1,用obtain()函數來獲得類的執行個體。
2,常用的一些方法:
2.1,使用addMovement(MotionEvent event)函數將當前的移動事件傳遞給VelocityTracker對象,參數是事件對象。
2.2,使用 computeCurrentVelocity (int units)函數來計算當前的速度 參數units: 你使用的速率單位1的意思是,以一毫秒運動了多少個像素的速率, 1000表示 一秒
時間內運動了多少個像素。 單位是毫秒。
2.3,computeCurrentVelocity(int units, float maxVelocity) 參數1同上,參數maxVelocity: 這個方法能計算出事件的最大速率。如果計算出來的速率大於maxVelocity
則得到的速率就是maxVelocity,小於maxVelocity則為真正計算出來的速率。
例如:CurrentVelocity =CurrentVelocity>maxVelocity?maxVelocity:CurrentVelocity;
2.4,使用 getXVelocity ()、 getYVelocity ()函數來獲得當前橫向和縱向的速度
3,例子demo:
1 private VelocityTracker mVelocityTracker;//生命變數 2 3 //在onTouchEvent(MotionEvent ev)中 4 5 6 if (mVelocityTracker == null) { 7 mVelocityTracker = VelocityTracker.obtain();//獲得VelocityTracker類執行個體 8 } 9 mVelocityTracker.addMovement(ev);//將事件加入到VelocityTracker類執行個體中 10 11 12 //判斷當ev事件是MotionEvent.ACTION_UP時:計算速率 13 final VelocityTracker velocityTracker = mVelocityTracker; 14 // 1000 provides pixels per second 15 velocityTracker.computeCurrentVelocity(1, (float)0.01); //設定maxVelocity值為0.1時,速率大於0.01時,顯示的速率都是0.01,速率小於0.01時,顯示正常 16 Log.i("test","velocityTraker"+velocityTracker.getXVelocity()); 17 18 velocityTracker.computeCurrentVelocity(1000); //設定units的值為1000,意思為一秒時間內運動了多少個像素 19 Log.i("test","velocityTraker"+velocityTracker.getXVelocity());