diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 312e70509b..cafae5fd23 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -217,11 +217,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } mTaskbarLauncherStateController.updateStateForFlag(FLAG_VISIBLE, isVisible); - // 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) { + if (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 da26d5a77e..57b0a09a90 100644 --- a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt +++ b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt @@ -928,11 +928,30 @@ 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 = valueAnimator.animatedFraction + val progress = + Interpolators.clampToProgress( + Interpolators.LINEAR, + valueAnimator.animatedFraction, + 0.8f, + 1f + ) for (leash in openingTargets) { animTransaction.setAlpha(leash, progress) } @@ -954,19 +973,6 @@ 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 1b98ba40af..2d29f4b969 100644 --- a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java +++ b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java @@ -176,6 +176,11 @@ 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; @@ -185,7 +190,6 @@ public class SplitToWorkspaceController { @Override public void onAnimationEnd(Animator animation) { if (!mIsCancelled) { - mController.launchSplitTasks(aBoolean -> cleanUp()); InteractionJankMonitorWrapper.end(Cuj.CUJ_SPLIT_SCREEN_ENTER); } }