mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-19 18:58:19 +00:00
Handle the animation when restarting apps
Fixes: 170338921 Test: manual Change-Id: I5a5722cb62fb53a68d140621ad79ed97f4d98571
This commit is contained in:
@@ -1020,7 +1020,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends
|
||||
|
||||
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 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends
|
||||
|
||||
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 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<?>, Q extends
|
||||
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,
|
||||
|
||||
@@ -41,4 +41,13 @@ public class RecentsAnimationTargets extends RemoteAnimationTargets {
|
||||
public boolean hasTargets() {
|
||||
return unfilteredApps.length != 0;
|
||||
}
|
||||
|
||||
public boolean hasTask(int taskId) {
|
||||
for (RemoteAnimationTargetCompat target : unfilteredApps) {
|
||||
if (target.taskId == taskId) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user