Fix jump when dismissing last grid task View
- Calcualte the scroll diff to bring large tile to middle of screen - Additional compensate for scroll diff between last task and ClearAllButton if ClearAllButton is visible Fix: 395883390 Test: manual, not adding e2e because animation jump cannot be caught by e2e test Flag: com.android.launcher3.enable_grid_only_overview Change-Id: I6a506f2af46ded4daf21fe49329ab71b59e3f19d
This commit is contained in:
@@ -3901,6 +3901,22 @@ public abstract class RecentsView<
|
||||
// the only invariant point in landscape split screen.
|
||||
snapToLastTask = true;
|
||||
}
|
||||
if (mUtils.getGridTaskCount() == 1 && dismissedTaskView.isGridTask()) {
|
||||
TaskView lastLargeTile = mUtils.getLastLargeTaskView();
|
||||
if (lastLargeTile != null) {
|
||||
// Calculate the distance to put last large tile back to middle of the screen.
|
||||
int primaryScroll = getPagedOrientationHandler().getPrimaryScroll(this);
|
||||
int lastLargeTileScroll = getScrollForPage(indexOfChild(lastLargeTile));
|
||||
longGridRowWidthDiff = primaryScroll - lastLargeTileScroll;
|
||||
|
||||
if (!isClearAllHidden) {
|
||||
// If ClearAllButton is visible, reduce the distance by scroll difference
|
||||
// between ClearAllButton and the last task.
|
||||
longGridRowWidthDiff += getLastTaskScroll(/*clearAllScroll=*/0,
|
||||
getPagedOrientationHandler().getPrimarySize(mClearAllButton));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we need to animate the grid to compensate the clear all gap, we split the second
|
||||
// half of the dismiss pending animation (in which the non-dismissed tasks slide into
|
||||
|
||||
Reference in New Issue
Block a user