diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index e5c28f6ef9..b26a7ea22d 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -459,11 +459,6 @@ public abstract class PagedView extends ViewGrou } } - // we moved this functionality to a helper function so SmoothPagedView can reuse it - protected boolean computeScrollHelper() { - return computeScrollHelper(true); - } - protected void announcePageForAccessibility() { if (isAccessibilityEnabled(getContext())) { // Notify the user when the page changes @@ -471,7 +466,7 @@ public abstract class PagedView extends ViewGrou } } - protected boolean computeScrollHelper(boolean shouldInvalidate) { + protected boolean computeScrollHelper() { if (mScroller.computeScrollOffset()) { // Don't bother scrolling if the page does not need to be moved int oldPos = mOrientationHandler.getPrimaryScroll(this); @@ -479,23 +474,29 @@ public abstract class PagedView extends ViewGrou if (oldPos != newPos) { mOrientationHandler.set(this, VIEW_SCROLL_TO, mScroller.getCurrX()); } - if (shouldInvalidate) { - if (mAllowOverScroll) { - if (newPos < mMinScroll && oldPos >= mMinScroll) { - mEdgeGlowLeft.onAbsorb((int) mScroller.getCurrVelocity()); - mScroller.abortAnimation(); - } else if (newPos > mMaxScroll && oldPos <= mMaxScroll) { - mEdgeGlowRight.onAbsorb((int) mScroller.getCurrVelocity()); - mScroller.abortAnimation(); - } + + if (mAllowOverScroll) { + if (newPos < mMinScroll && oldPos >= mMinScroll) { + mEdgeGlowLeft.onAbsorb((int) mScroller.getCurrVelocity()); + mScroller.abortAnimation(); + } else if (newPos > mMaxScroll && oldPos <= mMaxScroll) { + mEdgeGlowRight.onAbsorb((int) mScroller.getCurrVelocity()); + mScroller.abortAnimation(); } - - invalidate(); } - return true; - } else if (mNextPage != INVALID_PAGE && shouldInvalidate) { - sendScrollAccessibilityEvent(); + // If the scroller has scrolled to the final position and there is no edge effect, then + // finish the scroller to skip waiting for additional settling + int finalPos = mOrientationHandler.getPrimaryValue(mScroller.getFinalX(), + mScroller.getFinalY()); + if (newPos == finalPos && mEdgeGlowLeft.isFinished() && mEdgeGlowRight.isFinished()) { + mScroller.abortAnimation(); + } + + invalidate(); + return true; + } else if (mNextPage != INVALID_PAGE) { + sendScrollAccessibilityEvent(); int prevPage = mCurrentPage; mCurrentPage = validateNewPage(mNextPage); mNextPage = INVALID_PAGE; diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index f846d14ff9..47c67b9796 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1163,10 +1163,6 @@ public class Workspace extends PagedView mWallpaperOffset.syncWithScroll(); } - public void computeScrollWithoutInvalidation() { - computeScrollHelper(false); - } - @Override public void announceForAccessibility(CharSequence text) { // Don't announce if apps is on top of us. diff --git a/src/com/android/launcher3/touch/PagedOrientationHandler.java b/src/com/android/launcher3/touch/PagedOrientationHandler.java index d8e5a485fd..6811438c6a 100644 --- a/src/com/android/launcher3/touch/PagedOrientationHandler.java +++ b/src/com/android/launcher3/touch/PagedOrientationHandler.java @@ -105,7 +105,7 @@ public interface PagedOrientationHandler { int getPrimaryValue(int x, int y); int getSecondaryValue(int x, int y); - float getPrimaryValue(float x, float y); + float getPrimaryValue(float x, float y); float getSecondaryValue(float x, float y); boolean isLayoutNaturalToLauncher();