Fix bug where DiscoveryBounce is not cancelled after state change.
Bug: 131768436
Change-Id: I7d389671969a75ae7ec9f9f5cc1326f7105e2071
diff --git a/src/com/android/launcher3/allapps/DiscoveryBounce.java b/src/com/android/launcher3/allapps/DiscoveryBounce.java
index 1d62b43..8c59626 100644
--- a/src/com/android/launcher3/allapps/DiscoveryBounce.java
+++ b/src/com/android/launcher3/allapps/DiscoveryBounce.java
@@ -30,6 +30,9 @@
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherState;
+import com.android.launcher3.LauncherStateManager;
+import com.android.launcher3.LauncherStateManager.StateListener;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.compat.UserManagerCompat;
@@ -52,6 +55,16 @@
private final Launcher mLauncher;
private final Animator mDiscoBounceAnimation;
+ private final StateListener mStateListener = new StateListener() {
+ @Override
+ public void onStateTransitionStart(LauncherState toState) {
+ handleClose(false);
+ }
+
+ @Override
+ public void onStateTransitionComplete(LauncherState finalState) {}
+ };
+
public DiscoveryBounce(Launcher launcher, float delta) {
super(launcher, null);
mLauncher = launcher;
@@ -67,6 +80,7 @@
}
});
mDiscoBounceAnimation.addListener(controller.getProgressAnimatorListener());
+ launcher.getStateManager().addStateListener(mStateListener);
}
@Override
@@ -105,6 +119,7 @@
// Reset the all-apps progress to what ever it was previously.
mLauncher.getAllAppsController().setProgress(mLauncher.getStateManager()
.getState().getVerticalProgress(mLauncher));
+ mLauncher.getStateManager().removeStateListener(mStateListener);
}
}