Merge "Removing separate Cancel and End callbacks and using AnimationListener instead" into ub-launcher3-master
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 6cf3c7a..43c088b 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -1020,7 +1020,7 @@
protected abstract HomeAnimationFactory createHomeAnimationFactory(long duration);
- private TaskStackChangeListener mActivityRestartListener = new TaskStackChangeListener() {
+ private final TaskStackChangeListener mActivityRestartListener = new TaskStackChangeListener() {
@Override
public void onActivityRestartAttempt(ActivityManager.RunningTaskInfo task,
boolean homeTaskVisible, boolean clearedTask, boolean wasVisible) {
@@ -1459,13 +1459,33 @@
protected abstract void finishRecentsControllerToHome(Runnable callback);
+ private final TaskStackChangeListener mLiveTileRestartListener = new TaskStackChangeListener() {
+ @Override
+ public void onActivityRestartAttempt(ActivityManager.RunningTaskInfo task,
+ boolean homeTaskVisible, boolean clearedTask, boolean wasVisible) {
+ if (mRecentsAnimationTargets.hasTask(task.taskId)) {
+ launchOtherTaskInLiveTileMode(task.taskId, mRecentsAnimationTargets.apps);
+ }
+ ActivityManagerWrapper.getInstance().unregisterTaskStackListener(
+ mLiveTileRestartListener);
+ }
+ };
+
private void setupLauncherUiAfterSwipeUpToRecentsAnimation() {
endLauncherTransitionController();
mActivityInterface.onSwipeUpToRecentsComplete();
mRecentsView.onSwipeUpAnimationSuccess();
if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
mTaskAnimationManager.setLaunchOtherTaskInLiveTileModeHandler(
- this::launchOtherTaskInLiveTileMode);
+ appearedTaskTarget -> {
+ RemoteAnimationTargetCompat[] apps = Arrays.copyOf(
+ mRecentsAnimationTargets.apps,
+ mRecentsAnimationTargets.apps.length + 1);
+ apps[apps.length - 1] = appearedTaskTarget;
+ launchOtherTaskInLiveTileMode(appearedTaskTarget.taskId, apps);
+ });
+ ActivityManagerWrapper.getInstance().registerTaskStackListener(
+ mLiveTileRestartListener);
}
SystemUiProxy.INSTANCE.get(mContext).onOverviewShown(false, TAG);
@@ -1473,17 +1493,12 @@
reset();
}
- private void launchOtherTaskInLiveTileMode(RemoteAnimationTargetCompat appearedTaskTarget) {
- TaskView taskView = mRecentsView.getTaskView(appearedTaskTarget.taskId);
+ private void launchOtherTaskInLiveTileMode(int taskId, RemoteAnimationTargetCompat[] apps) {
+ TaskView taskView = mRecentsView.getTaskView(taskId);
if (taskView == null) {
return;
}
- RemoteAnimationTargetCompat[] apps = Arrays.copyOf(
- mRecentsAnimationTargets.apps,
- mRecentsAnimationTargets.apps.length + 1);
- apps[apps.length - 1] = appearedTaskTarget;
-
AnimatorSet anim = new AnimatorSet();
TaskViewUtils.composeRecentsLaunchAnimator(
anim, taskView, apps,
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java b/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java
index 718c5ba..da0a664 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java
@@ -41,4 +41,13 @@
public boolean hasTargets() {
return unfilteredApps.length != 0;
}
+
+ public boolean hasTask(int taskId) {
+ for (RemoteAnimationTargetCompat target : unfilteredApps) {
+ if (target.taskId == taskId) {
+ return true;
+ }
+ }
+ return false;
+ }
}