diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2016-07-20 18:59:20 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-07-20 18:59:20 +0000 |
commit | 5bc04e67f7928eb5a107c2512c7f3d84ab363609 (patch) | |
tree | f937078f7ce008574a27122548fc9fe8f5fa5f1f /src/com/android/launcher3/Workspace.java | |
parent | c80a024fb035657cafb63295e317e75af742d3e6 (diff) | |
parent | c553c33ae6824cf9b2f3274a9a5d275445ac1968 (diff) | |
download | android_packages_apps_Trebuchet-5bc04e67f7928eb5a107c2512c7f3d84ab363609.tar.gz android_packages_apps_Trebuchet-5bc04e67f7928eb5a107c2512c7f3d84ab363609.tar.bz2 android_packages_apps_Trebuchet-5bc04e67f7928eb5a107c2512c7f3d84ab363609.zip |
Merge "Protecting QSB scroll while transition animation is running." into ub-launcher3-calgary
Diffstat (limited to 'src/com/android/launcher3/Workspace.java')
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index bcd87b5a9..75d4a8d3d 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -313,6 +313,7 @@ public class Workspace extends PagedView // Total over scrollX in the overlay direction. private float mOverlayTranslation; private int mFirstPageScrollX; + private boolean mIgnoreQsbScroll; // Handles workspace state transitions private WorkspaceStateTransitionAnimation mStateTransitionAnimation; @@ -1384,8 +1385,10 @@ public class Workspace extends PagedView } private void onWorkspaceOverallScrollChanged() { - mLauncher.getQsbContainer().setTranslationX( - mOverlayTranslation + mFirstPageScrollX - getScrollX()); + if (!mIgnoreQsbScroll) { + mLauncher.getQsbContainer().setTranslationX( + mOverlayTranslation + mFirstPageScrollX - getScrollX()); + } } @Override @@ -1797,6 +1800,33 @@ public class Workspace extends PagedView super.onLayout(changed, left, top, right, bottom); mFirstPageScrollX = getScrollForPage(0); onWorkspaceOverallScrollChanged(); + + final LayoutTransition transition = getLayoutTransition(); + // If the transition is running defer updating max scroll, as some empty pages could + // still be present, and a max scroll change could cause sudden jumps in scroll. + if (transition != null && transition.isRunning()) { + transition.addTransitionListener(new LayoutTransition.TransitionListener() { + + @Override + public void startTransition(LayoutTransition transition, ViewGroup container, + View view, int transitionType) { + mIgnoreQsbScroll = true; + } + + @Override + public void endTransition(LayoutTransition transition, ViewGroup container, + View view, int transitionType) { + // Wait until all transitions are complete. + if (!transition.isRunning()) { + mIgnoreQsbScroll = false; + transition.removeTransitionListener(this); + mFirstPageScrollX = getScrollForPage(0); + onWorkspaceOverallScrollChanged(); + } + } + }); + } + } @Override |