diff --git a/core/java/android/widget/OverScroller.java b/core/java/android/widget/OverScroller.java index 614cd1739e364..d1fbe2f8097aa 100644 --- a/core/java/android/widget/OverScroller.java +++ b/core/java/android/widget/OverScroller.java @@ -670,6 +670,9 @@ public class OverScroller { // Current position private int mCurrentPosition; + // last frame position + private int mLastPosition; + // Final position private int mFinal; @@ -1319,6 +1322,17 @@ public class OverScroller { mCurrentPosition = mStart + (int) Math.round(distance); + int deltaDistance = mCurrentPosition - mLastPosition; + if (!mFinished && deltaDistance == 0) { + int direction = mFinal > mStart ? 1 : -1; + mCurrentPosition += direction; + if ((direction > 0 && mCurrentPosition > mFinal) || + (direction < 0 && mCurrentPosition < mFinal)) { + mCurrentPosition = mFinal; + } + } + mLastPosition = mCurrentPosition; + return true; } }