2D Recents: Fix a glitch during task relayout after a dismiss

This delays the resizing of the focus frame until all task views
relayout animations have ended.

Bug: 35258018
Test: Took before/after screencasts on local sw600dp device
Change-Id: Ifbf8932f4141bf90a3dfef20b2938d6801383706
This commit is contained in:
Manu Cornet
2017-02-10 12:54:40 -08:00
parent 0f2c853889
commit 551e80c34f
2 changed files with 13 additions and 6 deletions

View File

@@ -20,6 +20,8 @@ import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.IntDef;
@@ -1496,11 +1498,6 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
// Remove the task from the ignored set
removeIgnoreTask(removedTask);
// Resize the grid layout task view focus frame
if (mTaskViewFocusFrame != null) {
mTaskViewFocusFrame.resize();
}
// If requested, relayout with the given animation
if (animation != null) {
updateLayoutAlgorithm(true /* boundScroll */);
@@ -1838,6 +1835,17 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
announceForAccessibility(getContext().getString(
R.string.accessibility_recents_item_dismissed, event.task.title));
if (useGridLayout() && event.animation != null) {
event.animation.setListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animator) {
if (mTaskViewFocusFrame != null) {
// Resize the grid layout task view focus frame
mTaskViewFocusFrame.resize();
}
}
});
}
// Remove the task from the stack
mStack.removeTask(event.task, event.animation, false /* fromDockGesture */);
EventBus.getDefault().send(new DeleteTaskDataEvent(event.task));

View File

@@ -269,7 +269,6 @@ public class TaskView extends FixedSizeFrameLayout implements Task.TaskCallbacks
return super.onInterceptTouchEvent(ev);
}
@Override
protected void measureContents(int width, int height) {
int widthWithoutPadding = width - mPaddingLeft - mPaddingRight;