Merge "Allow user gesture to take priority over taskbar translation reset animnatiuon." into tm-qpr-dev

This commit is contained in:
Jon Miranda
2023-04-05 18:20:16 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 6 deletions

View File

@@ -642,7 +642,7 @@ public class TaskbarLauncherStateController {
long resetDuration = mControllers.taskbarStashController.isInApp()
? duration
: duration / 2;
if (!mControllers.taskbarTranslationController.willAnimateToZeroBefore(resetDuration)
if (mControllers.taskbarTranslationController.shouldResetBackToZero(resetDuration)
&& (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL)) {
animatorSet.play(mControllers.taskbarTranslationController
.createAnimToResetTranslation(resetDuration));

View File

@@ -54,6 +54,7 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
private boolean mHasSprungOnceThisGesture;
private @Nullable ValueAnimator mSpringBounce;
private boolean mGestureEnded;
private boolean mGestureInProgress;
private boolean mAnimationToHomeRunning;
private final boolean mIsTransientTaskbar;
@@ -123,6 +124,7 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
private void reset() {
mGestureEnded = false;
mGestureInProgress = false;
mHasSprungOnceThisGesture = false;
}
@@ -134,18 +136,24 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
}
/**
* Returns true if we will animate to zero before the input duration.
* Returns {@code true} if we should reset the animation back to zero.
*
* Returns {@code false} if there is a gesture in progress, or if we are already animating
* to 0 within the specified duration.
*/
public boolean willAnimateToZeroBefore(long duration) {
public boolean shouldResetBackToZero(long duration) {
if (mGestureInProgress) {
return false;
}
if (mSpringBounce != null && mSpringBounce.isRunning()) {
long springDuration = mSpringBounce.getDuration();
long current = mSpringBounce.getCurrentPlayTime();
return (springDuration - current < duration);
return (springDuration - current >= duration);
}
if (mTranslationYForSwipe.isAnimatingToValue(0)) {
return mTranslationYForSwipe.getRemainingTime() < duration;
return mTranslationYForSwipe.getRemainingTime() >= duration;
}
return false;
return true;
}
/**
@@ -188,6 +196,7 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
mAnimationToHomeRunning = false;
cancelSpringIfExists();
reset();
mGestureInProgress = true;
}
/**
* Called when there is movement to move the taskbar.
@@ -211,6 +220,7 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
mGestureEnded = true;
startSpring();
}
mGestureInProgress = false;
}
}
@@ -222,6 +232,7 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
pw.println(prefix + "\tmHasSprungOnceThisGesture=" + mHasSprungOnceThisGesture);
pw.println(prefix + "\tmAnimationToHomeRunning=" + mAnimationToHomeRunning);
pw.println(prefix + "\tmGestureEnded=" + mGestureEnded);
pw.println(prefix + "\tmGestureInProgress=" + mGestureInProgress);
pw.println(prefix + "\tmSpringBounce is running=" + (mSpringBounce != null
&& mSpringBounce.isRunning()));
}