用 Scroller 實現 Fling 慣性滑動


mScroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY); startX
startY  開始位置

velocityX
velocityY  //滑動的速度, 像素/s

minX
maxX   最小的值

minY
maxY   最大的值,最后的結果不會超過這個值

//其他的使用方法和startScroll一樣,在computeScroll 方法中獲取實時的x,y值。

注意這里和 startScroll 不一樣的地方, fling 最后的值 是
mMinX <= mFinalX <= mMaxX mMinY <= mFinalY <= mMaxY



一些系統的預訂值: ViewConfiguration configuration
= ViewConfiguration.get(context); int mTouchSlop = configuration.getScaledTouchSlop(); // 移動的距離大於這個像素值的時候,會認為是在滑動。 小米1上是24個像素 int mMinimumVelocity = configuration.getScaledMinimumFlingVelocity(); //最小的速度。小米1上是 75像素/s int mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); //最大的速度。小米1上是 6000像素/s 如何獲取 velocityX、velocityY值 1. 使用 android.view.GestureDetector; 在 OnGestureListener 中有 onFling 方法, 可以得到速度值: public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 2. 使用 VelocityTracker mVelocityTracker = VelocityTracker.obtain(); // 初始化 mVelocityTracker.addMovement(ev); // 將 onTouchEvent 中的每一個事件加入 mVelocityTracker.recycle(); // 在 ACTION_UP 和 ACTION_CANCEL 中 銷毀 // 在 ACTION_UP 事件中計算 velocityX 和 velocityY velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); // 第一個參數是單位,1表示 "像素/ms" 1000表示 "像素/s" 第二個參數是最大值。耗時較大,需要時才調用. int initialVelocity = (int) velocityTracker.getYVelocity(mActivePointerId); // 獲取速度 if (Math.abs(initialVelocity) > mMinimumVelocity) { // 和系統預設的最小值比較 fling(-initialVelocity); }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM