public void fling(int velocity, int min, int max) { /// M: [FEATURE.ADD] fancy layout @{ mScrollMax = max; mScrollMin = min; mScroller.setMaxScrollLength(max); mScroller.setMinScrollLength(min); /// @} int currX = getPosition(); mScroller.fling( currX, 0, // startX, startY velocity, 0, // velocityX, velocityY min, max, // minX, maxX 0, 0, // minY, maxY mOverflingEnabled ? mOverflingDistance : 0, 0); }
// Returns the distance that over the scroll limit. public int startScroll(int distance, int min, int max) { /// M: [FEATURE.ADD] fancy layout @{ mScrollMax = max; mScrollMin = min; mScroller.setMaxScrollLength(max); mScroller.setMinScrollLength(min); /// @} int currPosition = mScroller.getCurrX(); int finalPosition = mScroller.isFinished() ? currPosition : mScroller.getFinalX(); int newPosition = Utils.clamp(finalPosition + distance, min, max); if (newPosition != currPosition) { mScroller.startScroll( currPosition, 0, // startX, startY newPosition - currPosition, 0, 0); // dx, dy, duration } return finalPosition + distance - newPosition; }