// 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.
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 */));
}
// 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 */));
}
*/
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;
}
/**