Android VelocityTracker簡介
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 ()函數來獲得當前的速度
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!