2D Recents: use correct layout logic for drawing transition headers
Bug: 33752154 Test: Checked/screencasted app -> recents -> app transitions on sw60dp device Change-Id: Ib29e5feaadb4bdacae6c60d25526d0c7af95361f
This commit is contained in:
@@ -71,6 +71,7 @@ import com.android.systemui.recents.views.TaskStackView;
|
|||||||
import com.android.systemui.recents.views.TaskStackViewScroller;
|
import com.android.systemui.recents.views.TaskStackViewScroller;
|
||||||
import com.android.systemui.recents.views.TaskViewHeader;
|
import com.android.systemui.recents.views.TaskViewHeader;
|
||||||
import com.android.systemui.recents.views.TaskViewTransform;
|
import com.android.systemui.recents.views.TaskViewTransform;
|
||||||
|
import com.android.systemui.recents.views.grid.TaskGridLayoutAlgorithm;
|
||||||
import com.android.systemui.stackdivider.DividerView;
|
import com.android.systemui.stackdivider.DividerView;
|
||||||
import com.android.systemui.statusbar.BaseStatusBar;
|
import com.android.systemui.statusbar.BaseStatusBar;
|
||||||
import com.android.systemui.statusbar.phone.NavigationBarGestureHelper;
|
import com.android.systemui.statusbar.phone.NavigationBarGestureHelper;
|
||||||
@@ -618,10 +619,21 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
|
|||||||
stackLayout.initialize(displayRect, windowRect, mTaskStackBounds,
|
stackLayout.initialize(displayRect, windowRect, mTaskStackBounds,
|
||||||
TaskStackLayoutAlgorithm.StackState.getStackStateForStack(stack));
|
TaskStackLayoutAlgorithm.StackState.getStackStateForStack(stack));
|
||||||
mDummyStackView.setTasks(stack, false /* allowNotifyStackChanges */);
|
mDummyStackView.setTasks(stack, false /* allowNotifyStackChanges */);
|
||||||
|
// Get the width of a task view so that we know how wide to draw the header bar.
|
||||||
|
int taskViewWidth = 0;
|
||||||
|
if (mDummyStackView.useGridLayout()) {
|
||||||
|
TaskGridLayoutAlgorithm gridLayout = mDummyStackView.getGridAlgorithm();
|
||||||
|
gridLayout.initialize(windowRect);
|
||||||
|
taskViewWidth = (int) gridLayout.getTransform(0 /* taskIndex */,
|
||||||
|
stack.getTaskCount(), new TaskViewTransform(), stackLayout).rect.width();
|
||||||
|
} else {
|
||||||
|
Rect taskViewBounds = stackLayout.getUntransformedTaskViewBounds();
|
||||||
|
if (!taskViewBounds.isEmpty()) {
|
||||||
|
taskViewWidth = taskViewBounds.width();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Rect taskViewBounds = stackLayout.getUntransformedTaskViewBounds();
|
if (taskViewWidth > 0) {
|
||||||
if (!taskViewBounds.isEmpty()) {
|
|
||||||
int taskViewWidth = taskViewBounds.width();
|
|
||||||
synchronized (mHeaderBarLock) {
|
synchronized (mHeaderBarLock) {
|
||||||
if (mHeaderBar.getMeasuredWidth() != taskViewWidth ||
|
if (mHeaderBar.getMeasuredWidth() != taskViewWidth ||
|
||||||
mHeaderBar.getMeasuredHeight() != mTaskBarHeight) {
|
mHeaderBar.getMeasuredHeight() != mTaskBarHeight) {
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ import com.android.systemui.recents.model.Task;
|
|||||||
import com.android.systemui.recents.model.TaskStack;
|
import com.android.systemui.recents.model.TaskStack;
|
||||||
|
|
||||||
import com.android.systemui.recents.views.grid.GridTaskView;
|
import com.android.systemui.recents.views.grid.GridTaskView;
|
||||||
|
import com.android.systemui.recents.views.grid.TaskGridLayoutAlgorithm;
|
||||||
import com.android.systemui.recents.views.grid.TaskViewFocusFrame;
|
import com.android.systemui.recents.views.grid.TaskViewFocusFrame;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
@@ -446,6 +447,11 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
return mLayoutAlgorithm;
|
return mLayoutAlgorithm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns the grid algorithm for this task stack. */
|
||||||
|
public TaskGridLayoutAlgorithm getGridAlgorithm() {
|
||||||
|
return mLayoutAlgorithm.mTaskGridLayoutAlgorithm;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the touch handler for this task stack.
|
* Returns the touch handler for this task stack.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user