// 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; }