mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 19:38:21 +00:00
Prevent multiple workspace state animators from being started
-> Probably an issue with the way we're wrapping ViewPropertyAnimator which can lead to us acting like it's valid to have multiple instances of a VPA. In reality I think this is very problematic. -> For now, we can just make sure the previous animation is canceled if it hasn't yet completed. Bug 18428886 Change-Id: I097eec08ec68ed098e68866fb5eda72734c51b00
This commit is contained in:
@@ -283,6 +283,7 @@ public class Workspace extends SmoothPagedView
|
||||
private float[] mNewAlphas;
|
||||
private int mLastChildCount = -1;
|
||||
private float mTransitionProgress;
|
||||
private Animator mStateAnimator = null;
|
||||
|
||||
float mOverScrollEffect = 0f;
|
||||
|
||||
@@ -2243,6 +2244,13 @@ public class Workspace extends SmoothPagedView
|
||||
|
||||
AnimatorSet anim = animated ? LauncherAnimUtils.createAnimatorSet() : null;
|
||||
|
||||
// We only want a single instance of a workspace animation to be running at once, so
|
||||
// we cancel any incomplete transition.
|
||||
if (mStateAnimator != null) {
|
||||
mStateAnimator.cancel();
|
||||
}
|
||||
mStateAnimator = anim;
|
||||
|
||||
final State oldState = mState;
|
||||
final boolean oldStateIsNormal = (oldState == State.NORMAL);
|
||||
final boolean oldStateIsSpringLoaded = (oldState == State.SPRING_LOADED);
|
||||
@@ -2440,6 +2448,12 @@ public class Workspace extends SmoothPagedView
|
||||
anim.play(hotseatAlpha);
|
||||
anim.play(pageIndicatorAlpha);
|
||||
anim.setStartDelay(delay);
|
||||
anim.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mStateAnimator = null;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
overviewPanel.setAlpha(finalOverviewPanelAlpha);
|
||||
AlphaUpdateListener.updateVisibility(overviewPanel);
|
||||
|
||||
Reference in New Issue
Block a user