From dbfe998db9d0e270f5ff722e77bf4b874fd427ff Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 12 Jun 2019 09:40:11 -0700 Subject: [PATCH] Fix bug where recents animation is out of sync. This is caused by recent change where we animate RecentsView instead of the individual tasks when we are launching the center task. The fix is to not apply scale/translation to the individual tasks when we are launching the center task. Bug: 133450867 Change-Id: I463b5819c6c253001752c3dafdbd61009deba8b4 --- .../src/com/android/quickstep/TaskViewUtils.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskViewUtils.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskViewUtils.java index d0ea73a6fe..6897c1e7d7 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskViewUtils.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskViewUtils.java @@ -29,8 +29,6 @@ import android.view.View; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.ItemInfo; -import com.android.launcher3.Launcher; -import com.android.launcher3.LauncherAppState; import com.android.launcher3.Utilities; import com.android.quickstep.util.ClipAnimationHelper; import com.android.quickstep.util.MultiValueUpdateListener; @@ -123,6 +121,7 @@ public final class TaskViewUtils { new RemoteAnimationTargetSet(targets, MODE_OPENING); targetSet.addDependentTransactionApplier(applier); + final RecentsView recentsView = v.getRecentsView(); final ValueAnimator appAnimator = ValueAnimator.ofFloat(0, 1); appAnimator.setInterpolator(TOUCH_RESPONSE_INTERPOLATOR); appAnimator.addUpdateListener(new MultiValueUpdateListener() { @@ -153,7 +152,10 @@ public final class TaskViewUtils { // TODO: Take into account the current fullscreen progress for animating the insets params.setProgress(1 - percent); RectF taskBounds = inOutHelper.applyTransform(targetSet, params); - if (!skipViewChanges) { + int taskIndex = recentsView.indexOfChild(v); + int centerTaskIndex = recentsView.getCurrentPage(); + boolean parallaxCenterAndAdjacentTask = taskIndex != centerTaskIndex; + if (!skipViewChanges && parallaxCenterAndAdjacentTask) { float scale = taskBounds.width() / mThumbnailRect.width(); v.setScaleX(scale); v.setScaleY(scale);