Fix animation not playing when going home while another animation is playing
When going to a new state, we cancel any currently playing animation. When canceling the animation, we reset mState = mCurrentStableState. Thus, when determining the duration of the new animation, we have both state == NORMAL and mState == NORMAL, leading to a duration of 0 and therefore no animation. Storing the fromState before canceling/resetting fixes the issue. Change-Id: I92332deae8058c4dd41212fe7f749955ede28b1c
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
package com.android.launcher3;
|
||||
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_FADE;
|
||||
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_SCALE;
|
||||
@@ -222,7 +221,8 @@ public class LauncherStateManager {
|
||||
}
|
||||
}
|
||||
|
||||
// Cancel the current animation
|
||||
// Cancel the current animation. This will reset mState to mCurrentStableState, so store it.
|
||||
LauncherState fromState = mState;
|
||||
mConfig.reset();
|
||||
|
||||
if (!animated) {
|
||||
@@ -245,10 +245,10 @@ public class LauncherStateManager {
|
||||
|
||||
// Since state NORMAL can be reached from multiple states, just assume that the
|
||||
// transition plays in reverse and use the same duration as previous state.
|
||||
mConfig.duration = state == NORMAL ? mState.transitionDuration : state.transitionDuration;
|
||||
mConfig.duration = state == NORMAL ? fromState.transitionDuration : state.transitionDuration;
|
||||
|
||||
AnimatorSetBuilder builder = new AnimatorSetBuilder();
|
||||
prepareForAtomicAnimation(mState, state, builder);
|
||||
prepareForAtomicAnimation(fromState, state, builder);
|
||||
AnimatorSet animation = createAnimationToNewWorkspaceInternal(
|
||||
state, builder, onCompleteRunnable);
|
||||
Runnable runnable = new StartAnimRunnable(animation);
|
||||
|
||||
Reference in New Issue
Block a user