Use Decelerate Interpolator for predictive back to home window scaling
Bug: 311365390
Flag: NONE
Test: Manual, i.e. verifying back to home behaviour on device
Change-Id: Ib26edc13d9573b9c7e23f23b3abe9cd7e19809e7
diff --git a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
index ed6f852..227cfba 100644
--- a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
+++ b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
@@ -141,7 +141,8 @@
* @param handler Handler to the thread to run the animations on.
*/
public void registerBackCallbacks(Handler handler) {
- mBackCallback = new OnBackInvokedCallbackStub(handler, mProgressAnimator, this);
+ mBackCallback = new OnBackInvokedCallbackStub(handler, mProgressAnimator,
+ mProgressInterpolator, this);
SystemUiProxy.INSTANCE.get(mLauncher).setBackToLauncherCallback(mBackCallback,
new RemoteAnimationRunnerStub(this));
}
@@ -149,6 +150,7 @@
private static class OnBackInvokedCallbackStub extends IOnBackInvokedCallback.Stub {
private Handler mHandler;
private BackProgressAnimator mProgressAnimator;
+ private final Interpolator mProgressInterpolator;
// LauncherBackAnimationController has strong reference to Launcher activity, the binder
// callback should not hold strong reference to it to avoid memory leak.
private WeakReference<LauncherBackAnimationController> mControllerRef;
@@ -156,9 +158,11 @@
private OnBackInvokedCallbackStub(
Handler handler,
BackProgressAnimator progressAnimator,
+ Interpolator progressInterpolator,
LauncherBackAnimationController controller) {
mHandler = handler;
mProgressAnimator = progressAnimator;
+ mProgressInterpolator = progressInterpolator;
mControllerRef = new WeakReference<>(controller);
}
@@ -206,10 +210,8 @@
controller.startBack(backEvent);
mProgressAnimator.onBackStarted(backEvent, event -> {
float backProgress = event.getProgress();
- // TODO: Update once the interpolation curve spec is finalized.
controller.mBackProgress =
- 1 - (1 - backProgress) * (1 - backProgress) * (1
- - backProgress);
+ mProgressInterpolator.getInterpolation(backProgress);
controller.updateBackProgress(controller.mBackProgress, event);
});
}