diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 81f2c0f633..03c28053c1 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -225,7 +225,11 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } mTaskbarLauncherStateController.updateStateForFlag(FLAG_VISIBLE, isVisible); - if (fromInit) { + // TODO(b/308851855): Skip animation for launching split from home, will refine later + boolean skipAnimForSplit = enableSplitContextually() && + mLauncher.areBothSplitAppsConfirmed() && + mLauncher.getStateManager().getState() == LauncherState.NORMAL; + if (skipAnimForSplit || fromInit) { duration = 0; } return mTaskbarLauncherStateController.applyState(duration, startAnimation); diff --git a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt index 021c455624..378a00d290 100644 --- a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt +++ b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt @@ -929,30 +929,11 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC } } - if (splitRoot1 != null) { - // Set the highest level split root alpha; we could technically use the parent of - // either splitRoot1 or splitRoot2 - val parentToken = splitRoot1.parent - var rootLayer: Change? = null - if (parentToken != null) { - rootLayer = transitionInfo.getChange(parentToken) - } - if (rootLayer != null && rootLayer.leash != null) { - openingTargets.add(rootLayer.leash) - } - } - val animTransaction = Transaction() val animator = ValueAnimator.ofFloat(0f, 1f) animator.setDuration(QuickstepTransitionManager.SPLIT_LAUNCH_DURATION.toLong()) animator.addUpdateListener { valueAnimator: ValueAnimator -> - val progress = - Interpolators.clampToProgress( - Interpolators.LINEAR, - valueAnimator.animatedFraction, - 0.8f, - 1f - ) + val progress = valueAnimator.animatedFraction for (leash in openingTargets) { animTransaction.setAlpha(leash, progress) } @@ -974,6 +955,19 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC } ) + if (splitRoot1 != null) { + // Set the highest level split root alpha; we could technically use the parent of + // either splitRoot1 or splitRoot2 + val parentToken = splitRoot1.parent + var rootLayer: Change? = null + if (parentToken != null) { + rootLayer = transitionInfo.getChange(parentToken) + } + if (rootLayer != null && rootLayer.leash != null) { + t.setAlpha(rootLayer.leash, 1f) + } + } + t.apply() animator.start() } diff --git a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java index b6e6bf7292..d07acd4984 100644 --- a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java +++ b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java @@ -176,11 +176,6 @@ public class SplitToWorkspaceController { pendingAnimation.addListener(new AnimatorListenerAdapter() { private boolean mIsCancelled = false; - @Override - public void onAnimationStart(Animator animation) { - mController.launchSplitTasks(aBoolean -> cleanUp()); - } - @Override public void onAnimationCancel(Animator animation) { mIsCancelled = true; @@ -190,6 +185,7 @@ public class SplitToWorkspaceController { @Override public void onAnimationEnd(Animator animation) { if (!mIsCancelled) { + mController.launchSplitTasks(aBoolean -> cleanUp()); InteractionJankMonitorWrapper.end(Cuj.CUJ_SPLIT_SCREEN_ENTER); } }