您好,登錄后才能下訂單哦!
小編給大家分享一下Android中VelocityTracker怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
VelocityTracker顧名思義即速度跟蹤,在android中主要應用于touch even。VelocityTracker通過跟蹤一連串事件實時計算出當前的速度,這樣的用法在android系統空間中隨處可見,比如Gestures中的Fling, Scrolling等。
VelocityTracker主要用跟蹤觸摸屏事件(flinging事件和其他gestures手勢事件)的速率。用addMovement(MotionEvent)函數將Motion event加入到VelocityTracker類實例中.你可以使用getXVelocity() 或getXVelocity()獲得橫向和豎向的速率到速率時,但是使用它們之前請先調用computeCurrentVelocity(int)來初始化速率的單位 。
Public Methods | |
---|---|
void | addMovement( MotionEventevent) 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. intunitis表示速率的基本時間單位。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) |
示例代碼:
@Override public boolean onTouchEvent(MotionEvent ev) { if (null == mVelocityTracker) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMovement(ev); switch (ev.getAction()) { case MotionEvent.ACTION_UP: // 隱藏在左邊的寬度 int scrollX = getScrollX(); Loger.e(ObjEarth.TAG, "V=" + mVelocityTracker.getXVelocity()); if (Math.abs(mVelocityTracker.getXVelocity()) > 4000f) { if (mVelocityTracker.getXVelocity() < 0f) { //正向邏輯代碼 } else { //反向邏輯代碼 } } return true; case MotionEvent.ACTION_MOVE: mVelocityTracker.computeCurrentVelocity(1000); //設置units的值為1000,意思為一秒時間內運動了多少個像素 } return super.onTouchEvent(ev); }
以上是“Android中VelocityTracker怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。