OSDN Git Service

2D Recents: Fix a glitch during task relayout after a dismiss
authorManu Cornet <manucornet@google.com>
Fri, 10 Feb 2017 20:54:40 +0000 (12:54 -0800)
committerManu Cornet <manucornet@google.com>
Fri, 10 Feb 2017 22:42:40 +0000 (14:42 -0800)
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

packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java

index 9bc1ca5..3c5a141 100644 (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));
index 315c314..94e9df0 100644 (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;