diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index 6129e2e296..fbff893ce5 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -299,7 +299,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener ItemInfo tag = (ItemInfo) v.getTag(); if (tag != null && tag.shouldUseBackgroundAnimation()) { ContainerAnimationRunner containerAnimationRunner = - ContainerAnimationRunner.from(v, mStartingWindowListener); + ContainerAnimationRunner.from(v, mStartingWindowListener, onEndCallback); if (containerAnimationRunner != null) { delegateRunner = containerAnimationRunner; } @@ -1757,7 +1757,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener @Nullable private static ContainerAnimationRunner from( - View v, StartingWindowListener startingWindowListener) { + View v, StartingWindowListener startingWindowListener, RunnableList onEndCallback) { View viewToUse = findViewWithBackground(v); if (viewToUse == null) { viewToUse = v; @@ -1784,8 +1784,15 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener ActivityLaunchAnimator.Callback callback = task -> ColorUtils.setAlphaComponent( startingWindowListener.getBackgroundColor(), 255); + ActivityLaunchAnimator.Listener listener = new ActivityLaunchAnimator.Listener() { + @Override + public void onLaunchAnimationEnd() { + onEndCallback.executeAllAndDestroy(); + } + }; + return new ContainerAnimationRunner( - new ActivityLaunchAnimator.AnimationDelegate(controller, callback)); + new ActivityLaunchAnimator.AnimationDelegate(controller, callback, listener)); } /** Finds the closest parent of [view] (inclusive) with a background drawable. */