android.view.VelocityTracker主要用跟蹤觸摸屏事件(flinging事件和其他gestures手勢事件)的速率。用addMovement(MotionEvent)函數將Motion event加入到VelocityTracker類實例中.你可以使用getXVelocity() 或getXVelocity()獲得橫向和豎向的速率到速率時,但是使用它們之前請先調用computeCurrentVelocity(int)來初始化速率的單位 。
主要函數
Public Methods |
void
addMovement(MotionEvent event)
Add a user's movement to the tracker.
void
clear()
Reset the velocity tracker back to its initial state.
void
computeCurrentVelocity(int units, float maxVelocity)
Compute the current velocity based on the points that have been collected.
int unitis表示速率的基本時間單位。unitis值為
1的表示是,一毫秒時間單位內運動了多少個像素, unitis值為
1000表示一秒(1000毫秒)時間單位內運動了多少個像素
floatVelocity表示速率的最大值
void
computeCurrentVelocity(int units)
Equivalent to invoking
computeCurrentVelocity(int, float)
with a maximum velocity of Float.MAX_VALUE.
abstract T
getNextPoolable()
float
getXVelocity()
Retrieve the last computed X velocity.
float
getXVelocity(int id)
Retrieve the last computed X velocity.
float
getYVelocity(int id)
Retrieve the last computed Y velocity.
float
getYVelocity()
Retrieve the last computed Y velocity.
abstract boolean
isPooled()
static VelocityTracker
obtain()
Retrieve a new VelocityTracker object to watch the velocity of a motion.
void
recycle()
Return a VelocityTracker object back to be re-used by others.
abstract void
setNextPoolable(T element)
abstract void
setPooled(boolean isPooled)
示例:
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());
大體的使用是這樣的:
當你需要跟蹤觸摸屏事件的速度的時候,使用obtain()方法來獲得VelocityTracker類的一個實例對象
在onTouchEvent回調函數中,使用addMovement(MotionEvent)函數將當前的移動事件傳遞給VelocityTracker對象
使用computeCurrentVelocity (int units)函數來計算當前的速度,使用 getXVelocity ()、 getYVelocity ()函數來獲得當前的速度
翻譯自:http://developer.android.com/reference/android/view/VelocityTracker.html
參照自: http://blog.jrj.com.cn/4586793646,5298605a.html