diff options
Diffstat (limited to 'src/com/android/launcher2/PagedView.java')
-rw-r--r-- | src/com/android/launcher2/PagedView.java | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index ad88a89d7..14ef53fbb 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -129,6 +129,11 @@ public abstract class PagedView extends ViewGroup { protected int mUnboundedScrollX; protected int[] mTempVisiblePagesRange = new int[2]; + // mOverScrollX is equal to mScrollX when we're within the normal scroll range. Otherwise + // it is equal to the scaled overscroll position. We use a separate value so as to prevent + // the screens from continuing to translate beyond the normal bounds. + protected int mOverScrollX; + // parameter that adjusts the layout to be optimized for pages with that scale factor protected float mLayoutScale = 1.0f; @@ -377,6 +382,7 @@ public abstract class PagedView extends ViewGroup { overScroll(x - mMaxScrollX); } } else { + mOverScrollX = x; super.scrollTo(x, y); } @@ -730,7 +736,9 @@ public abstract class PagedView extends ViewGroup { @Override protected void dispatchDraw(Canvas canvas) { int halfScreenSize = getMeasuredWidth() / 2; - int screenCenter = mScrollX + halfScreenSize; + // mOverScrollX is equal to mScrollX when we're within the normal scroll range. Otherwise + // it is equal to the scaled overscroll position. + int screenCenter = mOverScrollX + halfScreenSize; if (screenCenter != mLastScreenCenter || mForceScreenScrolled) { screenScrolled(screenCenter); @@ -1077,9 +1085,11 @@ public abstract class PagedView extends ViewGroup { int overScrollAmount = (int) Math.round(f * screenSize); if (amount < 0) { - mScrollX = overScrollAmount; + mOverScrollX = overScrollAmount; + mScrollX = 0; } else { - mScrollX = mMaxScrollX + overScrollAmount; + mOverScrollX = mMaxScrollX + overScrollAmount; + mScrollX = mMaxScrollX; } invalidate(); } @@ -1099,9 +1109,11 @@ public abstract class PagedView extends ViewGroup { int overScrollAmount = (int) Math.round(OVERSCROLL_DAMP_FACTOR * f * screenSize); if (amount < 0) { - mScrollX = overScrollAmount; + mOverScrollX = overScrollAmount; + mScrollX = 0; } else { - mScrollX = mMaxScrollX + overScrollAmount; + mOverScrollX = mMaxScrollX + overScrollAmount; + mScrollX = mMaxScrollX; } invalidate(); } |