Fix taskbar stash misalignment when going from app to overview
Keep taskbar unaligned with hotseat if we're stashing anyway Test: Swipe up from app with taskbar present to overview, check frame by frame to ensure icons morph directly into the handle instead of above it Fixes: 208697792 Change-Id: If3238286b3383e75eb71fbd3b97d34bb3b44340b
This commit is contained in:
parent
3d206ca917
commit
f1951ce1f7
|
@ -121,6 +121,7 @@ import java.util.function.Supplier;
|
|||
// If going home, align the icons to hotseat
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
|
||||
// Update stashed flags first to ensure goingToUnstashedLauncherState() returns correctly.
|
||||
TaskbarStashController stashController = mControllers.taskbarStashController;
|
||||
stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE,
|
||||
toState.isTaskbarStashed());
|
||||
|
@ -195,7 +196,8 @@ import java.util.function.Supplier;
|
|||
if (hasAnyFlag(changedFlags, FLAG_RESUMED)) {
|
||||
boolean isResumed = isResumed();
|
||||
ObjectAnimator anim = mIconAlignmentForResumedState
|
||||
.animateToValue(isResumed ? 1 : 0)
|
||||
.animateToValue(isResumed && goingToUnstashedLauncherState()
|
||||
? 1 : 0)
|
||||
.setDuration(duration);
|
||||
|
||||
anim.addListener(new AnimatorListenerAdapter() {
|
||||
|
@ -219,7 +221,8 @@ import java.util.function.Supplier;
|
|||
if (hasAnyFlag(changedFlags, FLAG_RECENTS_ANIMATION_RUNNING)) {
|
||||
boolean isRecentsAnimationRunning = isRecentsAnimationRunning();
|
||||
Animator animator = mIconAlignmentForGestureState
|
||||
.animateToValue(isRecentsAnimationRunning ? 1 : 0);
|
||||
.animateToValue(isRecentsAnimationRunning && goingToUnstashedLauncherState()
|
||||
? 1 : 0);
|
||||
if (isRecentsAnimationRunning) {
|
||||
animator.setDuration(duration);
|
||||
}
|
||||
|
@ -253,6 +256,11 @@ import java.util.function.Supplier;
|
|||
return animatorSet;
|
||||
}
|
||||
|
||||
/** Returns whether we're going to a state where taskbar icons should align with launcher. */
|
||||
private boolean goingToUnstashedLauncherState() {
|
||||
return !mControllers.taskbarStashController.isInStashedLauncherState();
|
||||
}
|
||||
|
||||
private void playStateTransitionAnim(boolean isTransitionStateStashed,
|
||||
AnimatorSet animatorSet, long duration, boolean committed) {
|
||||
TaskbarStashController controller = mControllers.taskbarStashController;
|
||||
|
|
|
@ -216,6 +216,13 @@ public class TaskbarStashController {
|
|||
return hasAnyFlag(FLAGS_STASHED_IN_APP);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the taskbar should be stashed in the current LauncherState.
|
||||
*/
|
||||
public boolean isInStashedLauncherState() {
|
||||
return hasAnyFlag(FLAG_IN_STASHED_LAUNCHER_STATE) && supportsVisualStashing();
|
||||
}
|
||||
|
||||
private boolean hasAnyFlag(int flagMask) {
|
||||
return hasAnyFlag(mState, flagMask);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue