diff options
4 files changed, 42 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java index 56160187fed4..551f067c7790 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java @@ -470,6 +470,25 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV if (event.dropTarget instanceof TaskStack.DockState) { final TaskStack.DockState dockState = (TaskStack.DockState) event.dropTarget; + // Remove the task after it is docked + if (event.taskView.isFocusedTask()) { + mTaskStackView.resetFocusedTask(); + } + event.taskView.animate() + .alpha(0f) + .setDuration(150) + .setInterpolator(mFastOutLinearInInterpolator) + .setUpdateListener(null) + .setListener(null) + .withEndAction(new Runnable() { + @Override + public void run() { + mTaskStackView.getStack().removeTask(event.task); + } + }) + .withLayer() + .start(); + // Dock the task and launch it SystemServicesProxy ssp = Recents.getSystemServices(); ssp.startTaskInDockedMode(event.task.key.id, dockState.createMode); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java index c02eaf83fb2d..0395e9992abf 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -1559,7 +1559,13 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal int taskViewCount = taskViews.size(); for (int i = taskViewCount - 1; i >= 0; i--) { TaskView tv = taskViews.get(i); - tv.animate().alpha(0f).setDuration(200).start(); + tv.animate() + .alpha(0f) + .setDuration(200) + .setUpdateListener(null) + .setListener(null) + .withLayer() + .start(); } } @@ -1568,7 +1574,13 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal int taskViewCount = taskViews.size(); for (int i = taskViewCount - 1; i >= 0; i--) { TaskView tv = taskViews.get(i); - tv.animate().alpha(1f).setDuration(200).start(); + tv.animate() + .alpha(1f) + .setDuration(200) + .setUpdateListener(null) + .setListener(null) + .withLayer() + .start(); } } @@ -1580,7 +1592,9 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal Task task = tv.getTask(); // Reset the previously focused task before it is removed from the stack - resetFocusedTask(); + if (tv.isFocusedTask()) { + resetFocusedTask(); + } // Announce for accessibility tv.announceForAccessibility(getContext().getString( diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java index 4a5956dbab97..f2c89e66f517 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java @@ -395,6 +395,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, .translationY(ctx.offscreenTranslationY) .setStartDelay(0) .setUpdateListener(null) + .setListener(null) .setInterpolator(mFastOutLinearInInterpolator) .setDuration(taskViewExitToHomeDuration) .withEndAction(ctx.postAnimationTrigger.decrementAsRunnable()) @@ -443,6 +444,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, .translationY(getTranslationY() + taskViewAffiliateGroupEnterOffset) .setStartDelay(0) .setUpdateListener(null) + .setListener(null) .setInterpolator(mFastOutLinearInInterpolator) .setDuration(taskViewExitToAppDuration) .start(); @@ -464,6 +466,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, .alpha(0f) .setStartDelay(delay) .setUpdateListener(null) + .setListener(null) .setInterpolator(mFastOutSlowInInterpolator) .setDuration(taskViewRemoveAnimDuration) .withEndAction(new Runnable() { @@ -728,6 +731,8 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, .scaleX(finalScale) .scaleY(finalScale) .setDuration(175) + .setUpdateListener(null) + .setListener(null) .setInterpolator(mFastOutSlowInInterpolator) .start(); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java index 174ff33e9681..6d43f9c570ca 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java @@ -122,6 +122,7 @@ public class TaskViewTransform { } else { anim.setUpdateListener(null); } + anim.setListener(null); anim.setStartDelay(startDelay) .setDuration(duration) .setInterpolator(interp) |