Merge "Fix live tile in dismiss and swipe down animation" into main

This commit is contained in:
Treehugger Robot
2025-02-18 11:20:42 -08:00
committed by Android (Google) Code Review
3 changed files with 98 additions and 43 deletions
@@ -2920,28 +2920,40 @@ public abstract class RecentsView<
BaseState<?> endState = mSizeStrategy.stateFromGestureEndTarget(endTarget);
if (endState.displayOverviewTasksAsGrid(mContainer.getDeviceProfile())) {
TaskView runningTaskView = getRunningTaskView();
float runningTaskPrimaryGridTranslation = 0;
float runningTaskSecondaryGridTranslation = 0;
float runningTaskGridTranslationX = 0;
float runningTaskGridTranslationY = 0;
if (runningTaskView != null) {
// Apply the grid translation to running task unless it's being snapped to
// and removes the current translation applied to the running task.
runningTaskPrimaryGridTranslation = runningTaskView.getGridTranslationX()
runningTaskGridTranslationX = runningTaskView.getGridTranslationX()
- runningTaskView.getNonGridTranslationX();
runningTaskSecondaryGridTranslation = runningTaskView.getGridTranslationY();
runningTaskGridTranslationY = runningTaskView.getGridTranslationY();
}
for (RemoteTargetHandle remoteTargetHandle : remoteTargetHandles) {
TaskViewSimulator tvs = remoteTargetHandle.getTaskViewSimulator();
if (animatorSet == null) {
setGridProgress(1);
tvs.taskPrimaryTranslation.value = runningTaskPrimaryGridTranslation;
tvs.taskSecondaryTranslation.value = runningTaskSecondaryGridTranslation;
if (enableGridOnlyOverview()) {
tvs.taskGridTranslationX.value = runningTaskGridTranslationX;
tvs.taskGridTranslationY.value = runningTaskGridTranslationY;
} else {
tvs.taskPrimaryTranslation.value = runningTaskGridTranslationX;
tvs.taskSecondaryTranslation.value = runningTaskGridTranslationY;
}
} else {
animatorSet.play(ObjectAnimator.ofFloat(this, RECENTS_GRID_PROGRESS, 1));
animatorSet.play(tvs.carouselScale.animateToValue(1));
animatorSet.play(tvs.taskPrimaryTranslation.animateToValue(
runningTaskPrimaryGridTranslation));
animatorSet.play(tvs.taskSecondaryTranslation.animateToValue(
runningTaskSecondaryGridTranslation));
if (enableGridOnlyOverview()) {
animatorSet.play(tvs.carouselScale.animateToValue(1));
animatorSet.play(tvs.taskGridTranslationX.animateToValue(
runningTaskGridTranslationX));
animatorSet.play(tvs.taskGridTranslationY.animateToValue(
runningTaskGridTranslationY));
} else {
animatorSet.play(tvs.taskPrimaryTranslation.animateToValue(
runningTaskGridTranslationX));
animatorSet.play(tvs.taskSecondaryTranslation.animateToValue(
runningTaskGridTranslationY));
}
}
}
}
@@ -3494,8 +3506,13 @@ public abstract class RecentsView<
final TaskView runningTask = getRunningTaskView();
if (showAsGrid() && enableGridOnlyOverview() && runningTask != null) {
runActionOnRemoteHandles(
remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
.taskSecondaryTranslation.value = runningTask.getGridTranslationY()
remoteTargetHandle -> {
remoteTargetHandle.getTaskViewSimulator().taskGridTranslationX.value =
runningTask.getGridTranslationX()
- runningTask.getNonGridTranslationX();
remoteTargetHandle.getTaskViewSimulator().taskGridTranslationY.value =
runningTask.getGridTranslationY();
}
);
}
@@ -3609,12 +3626,9 @@ public abstract class RecentsView<
if (taskView.isRunningTask()) {
anim.addOnFrameCallback(() -> {
if (!mEnableDrawingLiveTile) return;
runActionOnRemoteHandles(
remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
.taskSecondaryTranslation.value = getPagedOrientationHandler()
.getSecondaryValue(taskView.getTranslationX(),
taskView.getTranslationY()
));
runActionOnRemoteHandles(remoteTargetHandle ->
remoteTargetHandle.getTaskViewSimulator().taskSecondaryTranslation.value =
taskView.getSecondaryDismissTranslationProperty().get(taskView));
redrawLiveTile();
});
}
@@ -5663,7 +5677,7 @@ public abstract class RecentsView<
anim.play(ObjectAnimator.ofFloat(this, FULLSCREEN_PROGRESS, 1));
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(@NonNull Animator animation, boolean isReverse) {
public void onAnimationStart(@NonNull Animator animation) {
taskView.getThumbnailBounds(mTempRect, /*relativeToDragLayer=*/true);
getTaskDimension(mContext, mContainer.getDeviceProfile(), mTempPointF);
Rect fullscreenBounds = new Rect(0, 0, (int) mTempPointF.x,
@@ -5685,6 +5699,18 @@ public abstract class RecentsView<
});
}
}
@Override
public void onAnimationEnd(Animator animation) {
// If live tile is not launching, reset the pivot applied above.
if (!taskView.isRunningTask()) {
runActionOnRemoteHandles(
remoteTargetHandle -> {
remoteTargetHandle.getTaskViewSimulator().setPivotOverride(
null);
});
}
}
});
} else if (!showAsGrid) {
// We are launching an adjacent task, so parallax the center and other adjacent task.
@@ -5793,10 +5819,12 @@ public abstract class RecentsView<
mPendingAnimation = new PendingAnimation(duration);
mPendingAnimation.add(anim);
runActionOnRemoteHandles(
remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
.addOverviewToAppAnim(mPendingAnimation, interpolator));
mPendingAnimation.addOnFrameCallback(this::redrawLiveTile);
if (taskView.isRunningTask()) {
runActionOnRemoteHandles(
remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
.addOverviewToAppAnim(mPendingAnimation, interpolator));
mPendingAnimation.addOnFrameCallback(this::redrawLiveTile);
}
mPendingAnimation.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {