Animate AbstractSlideInView translation shift with PendingAnimation.

The PendingAnimation gives us more flexibility than the AnimatorSet.

Test: Manual
Bug: 289290185
Flag: No
Change-Id: I3156a659098c44ce9e6b20e5e79e88742add629a
This commit is contained in:
Brian Isganitis
2023-08-07 21:25:21 +00:00
parent 99f30cb125
commit 0a036e9c15
7 changed files with 139 additions and 74 deletions

View File

@@ -17,6 +17,7 @@ package com.android.launcher3.taskbar.allapps;
import static com.android.app.animation.Interpolators.EMPHASIZED;
import android.animation.Animator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
@@ -58,7 +59,7 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla
/** Opens the all apps view. */
void show(boolean animate) {
if (mIsOpen || mOpenCloseAnimator.isRunning()) {
if (mIsOpen || mOpenCloseAnimation.getAnimationPlayer().isRunning()) {
return;
}
mIsOpen = true;
@@ -66,10 +67,12 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla
mAllAppsCallbacks.onAllAppsTransitionStart(true);
if (animate) {
setUpOpenCloseAnimator(TRANSLATION_SHIFT_OPENED, EMPHASIZED);
mOpenCloseAnimator.addListener(AnimatorListeners.forEndCallback(
setUpOpenAnimation(mAllAppsCallbacks.getOpenDuration());
Animator animator = mOpenCloseAnimation.getAnimationPlayer();
animator.setInterpolator(EMPHASIZED);
animator.addListener(AnimatorListeners.forEndCallback(
() -> mAllAppsCallbacks.onAllAppsTransitionEnd(true)));
mOpenCloseAnimator.setDuration(mAllAppsCallbacks.getOpenDuration()).start();
animator.start();
} else {
mTranslationShift = TRANSLATION_SHIFT_OPENED;
mAllAppsCallbacks.onAllAppsTransitionEnd(true);