diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java index db5413f85c241..04f10ef8e8930 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java @@ -286,10 +286,9 @@ public class RecentsTransitionHelper { // Calculate the offscreen task rect (for tasks that are not backed by views) float stackScroll = stackView.getScroller().getStackScroll(); TaskView taskView = stackView.getChildViewForTask(task); - TaskStackLayoutAlgorithm layoutAlgorithm = stackView.getStackAlgorithm(); - Rect offscreenTaskRect = new Rect(layoutAlgorithm.mTaskRect); - offscreenTaskRect.offsetTo(offscreenTaskRect.left, - layoutAlgorithm.mStackRect.bottom); + TaskStackLayoutAlgorithm stackLayout = stackView.getStackAlgorithm(); + Rect offscreenTaskRect = new Rect(); + stackLayout.getFrontOfStackTransform().rect.round(offscreenTaskRect); // If this is a full screen stack, the transition will be towards the single, full screen // task. We only need the transition spec for this task. @@ -302,8 +301,8 @@ public class RecentsTransitionHelper { if (taskView == null) { specs.add(composeOffscreenAnimationSpec(task, offscreenTaskRect)); } else { - layoutAlgorithm.getStackTransformScreenCoordinates(task, stackScroll, mTmpTransform, - null); + mTmpTransform.fillIn(taskView); + stackLayout.transformToScreenCoordinates(mTmpTransform); specs.add(composeAnimationSpec(stackView, taskView, mTmpTransform, true /* addHeaderBitmap */)); } @@ -324,8 +323,8 @@ public class RecentsTransitionHelper { // never happen) specs.add(composeOffscreenAnimationSpec(t, offscreenTaskRect)); } else { - layoutAlgorithm.getStackTransformScreenCoordinates(t, stackScroll, - mTmpTransform, null); + mTmpTransform.fillIn(taskView); + stackLayout.transformToScreenCoordinates(mTmpTransform); specs.add(composeAnimationSpec(stackView, tv, mTmpTransform, true /* addHeaderBitmap */)); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java index ee3a9b9e3c7d3..bdc4c1a12117f 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java @@ -831,12 +831,19 @@ public class TaskStackLayoutAlgorithm { */ public TaskViewTransform getStackTransformScreenCoordinates(Task task, float stackScroll, TaskViewTransform transformOut, TaskViewTransform frontTransform) { - Rect windowRect = Recents.getSystemServices().getWindowRect(); TaskViewTransform transform = getStackTransform(task, stackScroll, mFocusState, transformOut, frontTransform, true /* forceUpdate */, false /* ignoreTaskOverrides */); - transform.rect.offset(windowRect.left, windowRect.top); - return transform; + return transformToScreenCoordinates(transform); + } + + /** + * Transforms the given {@param transformOut} to the screen coordinates. + */ + public TaskViewTransform transformToScreenCoordinates(TaskViewTransform transformOut) { + Rect windowRect = Recents.getSystemServices().getWindowRect(); + transformOut.rect.offset(windowRect.left, windowRect.top); + return transformOut; } /** diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java index 068596bba54d2..6176d99a7c174 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -1618,7 +1618,6 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal } if (launchTaskIndex != -1) { // Stop all animations - mUIDozeTrigger.stopDozing(); cancelAllTaskViewAnimations(); final Task launchTask = mStack.getStackTasks().get(launchTaskIndex);