翻譯自:http://developer.android.com/reference/android/view/VelocityTracker.htmlhtml
參照自: http://blog.jrj.com.cn/4586793646,5298605a.htmlandroid
android.view.VelocityTracker主要用跟蹤觸摸屏事件(flinging事件和其餘gestures手勢事件)的速率。用addMovement(MotionEvent)函數將Motion event加入到VelocityTracker類實例中.你可使用getXVelocity() 或getXVelocity()得到橫向和豎向的速率到速率時,可是使用它們以前請先調用computeCurrentVelocity(int)來初始化速率的單位 。ide
主要函數函數
Public Methodsui
void
addMovement(MotionEvent event)翻譯
Add a user's movement to the tracker.code
void
clear()htm
Reset the velocity tracker back to its initial state.對象
void
computeCurrentVelocity(int units, float maxVelocity)blog
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 ()函數來得到當前的速度