Loading quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +16 −2 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener public static final int CONTENT_ALPHA_DURATION = 217; public static final int TRANSIENT_TASKBAR_TRANSITION_DURATION = 417; public static final int PINNED_TASKBAR_TRANSITION_DURATION = 600; public static final int TASKBAR_TO_APP_DURATION = 600; // TODO(b/236145847): Tune TASKBAR_TO_HOME_DURATION to 383 after conflict with unlock animation // is solved. Loading Loading @@ -1745,8 +1746,21 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener return new AnimatorBackState(rectFSpringAnim, anim); } public static int getTaskbarToHomeDuration() { if (enableScalingRevealHomeAnimation()) { /** Get animation duration for taskbar for going to home. */ public static int getTaskbarToHomeDuration(boolean isPinnedTaskbar) { return getTaskbarToHomeDuration(false, isPinnedTaskbar); } /** * Get animation duration for taskbar for going to home. * * @param shouldOverrideToFastAnimation should overwrite scaling reveal home animation duration */ public static int getTaskbarToHomeDuration(boolean shouldOverrideToFastAnimation, boolean isPinnedTaskbar) { if (isPinnedTaskbar) { return PINNED_TASKBAR_TRANSITION_DURATION; } else if (enableScalingRevealHomeAnimation() && !shouldOverrideToFastAnimation) { return TASKBAR_TO_HOME_DURATION_SLOW; } else { return TASKBAR_TO_HOME_DURATION_FAST; Loading quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +6 −2 Original line number Diff line number Diff line Loading @@ -212,8 +212,12 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } private int getTaskbarAnimationDuration(boolean isVisible) { if (isVisible && !mLauncher.getPredictiveBackToHomeInProgress()) { return getTaskbarToHomeDuration(); // fast animation duration since we will not be playing workspace reveal animation. boolean shouldOverrideToFastAnimation = !isHotseatIconOnTopWhenAligned() || mLauncher.getPredictiveBackToHomeInProgress(); boolean isPinnedTaskbar = DisplayController.isPinnedTaskbar(mLauncher); if (isVisible || isPinnedTaskbar) { return getTaskbarToHomeDuration(shouldOverrideToFastAnimation, isPinnedTaskbar); } else { return DisplayController.isTransientTaskbar(mLauncher) ? TRANSIENT_TASKBAR_TRANSITION_DURATION Loading quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +86 −15 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.launcher3.taskbar; import static com.android.app.animation.Interpolators.EMPHASIZED; import static com.android.app.animation.Interpolators.FINAL_FRAME; import static com.android.app.animation.Interpolators.INSTANT; import static com.android.launcher3.Flags.enableScalingRevealHomeAnimation; import static com.android.launcher3.Hotseat.ALPHA_CHANNEL_TASKBAR_ALIGNMENT; import static com.android.launcher3.Hotseat.ALPHA_CHANNEL_TASKBAR_STASH; Loading Loading @@ -222,7 +223,9 @@ public class TaskbarLauncherStateController { updateStateForFlag(FLAG_LAUNCHER_IN_STATE_TRANSITION, true); if (!mShouldDelayLauncherStateAnim) { if (toState == LauncherState.NORMAL) { applyState(QuickstepTransitionManager.getTaskbarToHomeDuration()); applyState(QuickstepTransitionManager.getTaskbarToHomeDuration( DisplayController.isPinnedTaskbar( mControllers.taskbarActivityContext))); } else { applyState(); } Loading Loading @@ -459,9 +462,12 @@ public class TaskbarLauncherStateController { private Animator onStateChangeApplied(int changedFlags, long duration, boolean start) { final boolean isInLauncher = isInLauncher(); final boolean isInOverview = mControllers.uiController.isInOverviewUi(); final boolean isIconAlignedWithHotseat = isIconAlignedWithHotseat(); final float toAlignment = isIconAlignedWithHotseat ? 1 : 0; boolean handleOpenFloatingViews = false; boolean isPinnedTaskbar = DisplayController.isPinnedTaskbar( mControllers.taskbarActivityContext); if (DEBUG) { Log.d(TAG, "onStateChangeApplied - isInLauncher: " + isInLauncher + ", mLauncherState: " + mLauncherState Loading Loading @@ -573,10 +579,17 @@ public class TaskbarLauncherStateController { } float backgroundAlpha = isInLauncher && isTaskbarAlignedWithHotseat() ? 0 : 1; AnimatedFloat taskbarBgOffset = mControllers.taskbarDragLayerController.getTaskbarBackgroundOffset(); boolean showTaskbar = !isInLauncher || isInOverview; float taskbarBgOffsetEnd = showTaskbar ? 0f : 1f; float taskbarBgOffsetStart = showTaskbar ? 1f : 0f; // Don't animate if background has reached desired value. if (mTaskbarBackgroundAlpha.isAnimating() || mTaskbarBackgroundAlpha.value != backgroundAlpha) { || mTaskbarBackgroundAlpha.value != backgroundAlpha || taskbarBgOffset.isAnimatingToValue(taskbarBgOffsetStart) || taskbarBgOffset.value != taskbarBgOffsetEnd) { mTaskbarBackgroundAlpha.cancelAnimation(); if (DEBUG) { Log.d(TAG, "onStateChangeApplied - taskbarBackgroundAlpha - " Loading @@ -587,25 +600,35 @@ public class TaskbarLauncherStateController { boolean isInLauncherIconNotAligned = isInLauncher && !isIconAlignedWithHotseat; boolean notInLauncherIconNotAligned = !isInLauncher && !isIconAlignedWithHotseat; boolean isInLauncherIconIsAligned = isInLauncher && isIconAlignedWithHotseat; // When Hotseat icons are not on top don't change duration or add start delay. // This will keep the duration in sync for icon alignment and background fade in/out. // For example, launching app from launcher all apps. boolean isHotseatIconOnTopWhenAligned = mControllers.uiController.isHotseatIconOnTopWhenAligned(); float startDelay = 0; // We want to delay the background from fading in so that the icons have time to move // into the bounds of the background before it appears. if (isInLauncherIconNotAligned) { startDelay = duration * TASKBAR_BG_ALPHA_LAUNCHER_NOT_ALIGNED_DELAY_MULT; } else if (notInLauncherIconNotAligned) { } else if (notInLauncherIconNotAligned && isHotseatIconOnTopWhenAligned) { startDelay = duration * TASKBAR_BG_ALPHA_NOT_LAUNCHER_NOT_ALIGNED_DELAY_MULT; } float newDuration = duration - startDelay; if (isInLauncherIconIsAligned) { if (isInLauncherIconIsAligned && isHotseatIconOnTopWhenAligned) { // Make the background fade out faster so that it is gone by the time the // icons move outside of the bounds of the background. newDuration = duration * TASKBAR_BG_ALPHA_LAUNCHER_IS_ALIGNED_DURATION_MULT; } Animator taskbarBackgroundAlpha = mTaskbarBackgroundAlpha .animateToValue(backgroundAlpha) .setDuration((long) newDuration); Animator taskbarBackgroundAlpha = mTaskbarBackgroundAlpha.animateToValue( backgroundAlpha); if (isPinnedTaskbar) { setupPinnedTaskbarAnimation(animatorSet, showTaskbar, taskbarBgOffset, taskbarBgOffsetStart, taskbarBgOffsetEnd, duration, taskbarBackgroundAlpha); } else { taskbarBackgroundAlpha.setDuration((long) newDuration); taskbarBackgroundAlpha.setStartDelay((long) startDelay); } animatorSet.play(taskbarBackgroundAlpha); } Loading Loading @@ -671,15 +694,18 @@ public class TaskbarLauncherStateController { + mIconAlignment.value + " -> " + toAlignment + ": " + duration); } if (!isPinnedTaskbar) { if (hasAnyFlag(FLAG_TASKBAR_HIDDEN)) { iconAlignAnim.setInterpolator(FINAL_FRAME); } else { animatorSet.play(iconAlignAnim); } } } Interpolator interpolator = enableScalingRevealHomeAnimation() Interpolator interpolator = enableScalingRevealHomeAnimation() && !isPinnedTaskbar ? ScalingWorkspaceRevealAnim.SCALE_INTERPOLATOR : EMPHASIZED; animatorSet.setInterpolator(interpolator); if (start) { Loading @@ -688,6 +714,49 @@ public class TaskbarLauncherStateController { return animatorSet; } private void setupPinnedTaskbarAnimation(AnimatorSet animatorSet, boolean showTaskbar, AnimatedFloat taskbarBgOffset, float taskbarBgOffsetStart, float taskbarBgOffsetEnd, long duration, Animator taskbarBackgroundAlpha) { float targetAlpha = !showTaskbar ? 1 : 0; mLauncher.getHotseat().setIconsAlpha(targetAlpha, ALPHA_CHANNEL_TASKBAR_ALIGNMENT); if (mIsQsbInline) { mLauncher.getHotseat().setQsbAlpha(targetAlpha, ALPHA_CHANNEL_TASKBAR_ALIGNMENT); } if ((taskbarBgOffset.value != taskbarBgOffsetEnd && !taskbarBgOffset.isAnimating()) || taskbarBgOffset.isAnimatingToValue(taskbarBgOffsetStart)) { taskbarBgOffset.cancelAnimation(); Animator taskbarIconAlpha = mTaskbarAlphaForHome.animateToValue( showTaskbar ? 1f : 0f); AnimatedFloat taskbarIconTranslationYForHome = mControllers.taskbarViewController.mTaskbarIconTranslationYForHome; ObjectAnimator taskbarBackgroundOffset = taskbarBgOffset.animateToValue( taskbarBgOffsetStart, taskbarBgOffsetEnd); ObjectAnimator taskbarIconsYTranslation = null; float taskbarHeight = mControllers.taskbarActivityContext.getDeviceProfile().taskbarHeight; if (showTaskbar) { taskbarIconsYTranslation = taskbarIconTranslationYForHome.animateToValue( taskbarHeight, 0); } else { taskbarIconsYTranslation = taskbarIconTranslationYForHome.animateToValue(0, taskbarHeight); } taskbarIconAlpha.setDuration(duration); taskbarIconsYTranslation.setDuration(duration); taskbarBackgroundOffset.setDuration(duration); animatorSet.play(taskbarIconAlpha); animatorSet.play(taskbarIconsYTranslation); animatorSet.play(taskbarBackgroundOffset); } taskbarBackgroundAlpha.setInterpolator(showTaskbar ? INSTANT : FINAL_FRAME); taskbarBackgroundAlpha.setDuration(duration); } /** * Whether the taskbar is aligned with the hotseat in the current/target launcher state. * Loading Loading @@ -950,7 +1019,8 @@ public class TaskbarLauncherStateController { * * @param finishedToApp {@code true} if the recents animation finished to showing an app and * not workspace or overview * @param canceled {@code true} if the recents animation was canceled instead of finishing * @param canceled {@code true} if the recents animation was canceled instead of * finishing * to completion */ private void endGestureStateOverride(boolean finishedToApp, boolean canceled) { Loading @@ -968,6 +1038,7 @@ public class TaskbarLauncherStateController { /** * Updates the visible state immediately to ensure a seamless handoff. * * @param finishedToApp True iff user is in an app. */ private void updateStateForUserFinishedToApp(boolean finishedToApp) { Loading quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +4 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.android.app.animation.Interpolators.INSTANT; import static com.android.app.animation.Interpolators.LINEAR; import static com.android.internal.jank.InteractionJankMonitor.Configuration; import static com.android.launcher3.Flags.enableScalingRevealHomeAnimation; import static com.android.launcher3.QuickstepTransitionManager.PINNED_TASKBAR_TRANSITION_DURATION; import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_HIDE; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_SHOW; Loading Loading @@ -398,6 +399,9 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * Returns how long the stash/unstash animation should play. */ public long getStashDuration() { if (DisplayController.isPinnedTaskbar(mActivity)) { return PINNED_TASKBAR_TRANSITION_DURATION; } return DisplayController.isTransientTaskbar(mActivity) ? TRANSIENT_TASKBAR_STASH_DURATION : TASKBAR_STASH_DURATION; Loading quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +3 −1 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private final TaskbarView mTaskbarView; private final MultiValueAlpha mTaskbarIconAlpha; private final AnimatedFloat mTaskbarIconScaleForStash = new AnimatedFloat(this::updateScale); private final AnimatedFloat mTaskbarIconTranslationYForHome = new AnimatedFloat( public final AnimatedFloat mTaskbarIconTranslationYForHome = new AnimatedFloat( this::updateTranslationY); private final AnimatedFloat mTaskbarIconTranslationYForStash = new AnimatedFloat( this::updateTranslationY); Loading Loading @@ -796,6 +796,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar */ private AnimatorPlaybackController createIconAlignmentController(DeviceProfile launcherDp) { PendingAnimation setter = new PendingAnimation(100); // icon alignment not needed for pinned taskbar. if (DisplayController.isPinnedTaskbar(mActivity)) return setter.createPlaybackController(); mOnControllerPreCreateCallback.run(); DeviceProfile taskbarDp = mActivity.getDeviceProfile(); Rect hotseatPadding = launcherDp.getHotseatLayoutPadding(mActivity); Loading Loading
quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +16 −2 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener public static final int CONTENT_ALPHA_DURATION = 217; public static final int TRANSIENT_TASKBAR_TRANSITION_DURATION = 417; public static final int PINNED_TASKBAR_TRANSITION_DURATION = 600; public static final int TASKBAR_TO_APP_DURATION = 600; // TODO(b/236145847): Tune TASKBAR_TO_HOME_DURATION to 383 after conflict with unlock animation // is solved. Loading Loading @@ -1745,8 +1746,21 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener return new AnimatorBackState(rectFSpringAnim, anim); } public static int getTaskbarToHomeDuration() { if (enableScalingRevealHomeAnimation()) { /** Get animation duration for taskbar for going to home. */ public static int getTaskbarToHomeDuration(boolean isPinnedTaskbar) { return getTaskbarToHomeDuration(false, isPinnedTaskbar); } /** * Get animation duration for taskbar for going to home. * * @param shouldOverrideToFastAnimation should overwrite scaling reveal home animation duration */ public static int getTaskbarToHomeDuration(boolean shouldOverrideToFastAnimation, boolean isPinnedTaskbar) { if (isPinnedTaskbar) { return PINNED_TASKBAR_TRANSITION_DURATION; } else if (enableScalingRevealHomeAnimation() && !shouldOverrideToFastAnimation) { return TASKBAR_TO_HOME_DURATION_SLOW; } else { return TASKBAR_TO_HOME_DURATION_FAST; Loading
quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +6 −2 Original line number Diff line number Diff line Loading @@ -212,8 +212,12 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } private int getTaskbarAnimationDuration(boolean isVisible) { if (isVisible && !mLauncher.getPredictiveBackToHomeInProgress()) { return getTaskbarToHomeDuration(); // fast animation duration since we will not be playing workspace reveal animation. boolean shouldOverrideToFastAnimation = !isHotseatIconOnTopWhenAligned() || mLauncher.getPredictiveBackToHomeInProgress(); boolean isPinnedTaskbar = DisplayController.isPinnedTaskbar(mLauncher); if (isVisible || isPinnedTaskbar) { return getTaskbarToHomeDuration(shouldOverrideToFastAnimation, isPinnedTaskbar); } else { return DisplayController.isTransientTaskbar(mLauncher) ? TRANSIENT_TASKBAR_TRANSITION_DURATION Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +86 −15 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.launcher3.taskbar; import static com.android.app.animation.Interpolators.EMPHASIZED; import static com.android.app.animation.Interpolators.FINAL_FRAME; import static com.android.app.animation.Interpolators.INSTANT; import static com.android.launcher3.Flags.enableScalingRevealHomeAnimation; import static com.android.launcher3.Hotseat.ALPHA_CHANNEL_TASKBAR_ALIGNMENT; import static com.android.launcher3.Hotseat.ALPHA_CHANNEL_TASKBAR_STASH; Loading Loading @@ -222,7 +223,9 @@ public class TaskbarLauncherStateController { updateStateForFlag(FLAG_LAUNCHER_IN_STATE_TRANSITION, true); if (!mShouldDelayLauncherStateAnim) { if (toState == LauncherState.NORMAL) { applyState(QuickstepTransitionManager.getTaskbarToHomeDuration()); applyState(QuickstepTransitionManager.getTaskbarToHomeDuration( DisplayController.isPinnedTaskbar( mControllers.taskbarActivityContext))); } else { applyState(); } Loading Loading @@ -459,9 +462,12 @@ public class TaskbarLauncherStateController { private Animator onStateChangeApplied(int changedFlags, long duration, boolean start) { final boolean isInLauncher = isInLauncher(); final boolean isInOverview = mControllers.uiController.isInOverviewUi(); final boolean isIconAlignedWithHotseat = isIconAlignedWithHotseat(); final float toAlignment = isIconAlignedWithHotseat ? 1 : 0; boolean handleOpenFloatingViews = false; boolean isPinnedTaskbar = DisplayController.isPinnedTaskbar( mControllers.taskbarActivityContext); if (DEBUG) { Log.d(TAG, "onStateChangeApplied - isInLauncher: " + isInLauncher + ", mLauncherState: " + mLauncherState Loading Loading @@ -573,10 +579,17 @@ public class TaskbarLauncherStateController { } float backgroundAlpha = isInLauncher && isTaskbarAlignedWithHotseat() ? 0 : 1; AnimatedFloat taskbarBgOffset = mControllers.taskbarDragLayerController.getTaskbarBackgroundOffset(); boolean showTaskbar = !isInLauncher || isInOverview; float taskbarBgOffsetEnd = showTaskbar ? 0f : 1f; float taskbarBgOffsetStart = showTaskbar ? 1f : 0f; // Don't animate if background has reached desired value. if (mTaskbarBackgroundAlpha.isAnimating() || mTaskbarBackgroundAlpha.value != backgroundAlpha) { || mTaskbarBackgroundAlpha.value != backgroundAlpha || taskbarBgOffset.isAnimatingToValue(taskbarBgOffsetStart) || taskbarBgOffset.value != taskbarBgOffsetEnd) { mTaskbarBackgroundAlpha.cancelAnimation(); if (DEBUG) { Log.d(TAG, "onStateChangeApplied - taskbarBackgroundAlpha - " Loading @@ -587,25 +600,35 @@ public class TaskbarLauncherStateController { boolean isInLauncherIconNotAligned = isInLauncher && !isIconAlignedWithHotseat; boolean notInLauncherIconNotAligned = !isInLauncher && !isIconAlignedWithHotseat; boolean isInLauncherIconIsAligned = isInLauncher && isIconAlignedWithHotseat; // When Hotseat icons are not on top don't change duration or add start delay. // This will keep the duration in sync for icon alignment and background fade in/out. // For example, launching app from launcher all apps. boolean isHotseatIconOnTopWhenAligned = mControllers.uiController.isHotseatIconOnTopWhenAligned(); float startDelay = 0; // We want to delay the background from fading in so that the icons have time to move // into the bounds of the background before it appears. if (isInLauncherIconNotAligned) { startDelay = duration * TASKBAR_BG_ALPHA_LAUNCHER_NOT_ALIGNED_DELAY_MULT; } else if (notInLauncherIconNotAligned) { } else if (notInLauncherIconNotAligned && isHotseatIconOnTopWhenAligned) { startDelay = duration * TASKBAR_BG_ALPHA_NOT_LAUNCHER_NOT_ALIGNED_DELAY_MULT; } float newDuration = duration - startDelay; if (isInLauncherIconIsAligned) { if (isInLauncherIconIsAligned && isHotseatIconOnTopWhenAligned) { // Make the background fade out faster so that it is gone by the time the // icons move outside of the bounds of the background. newDuration = duration * TASKBAR_BG_ALPHA_LAUNCHER_IS_ALIGNED_DURATION_MULT; } Animator taskbarBackgroundAlpha = mTaskbarBackgroundAlpha .animateToValue(backgroundAlpha) .setDuration((long) newDuration); Animator taskbarBackgroundAlpha = mTaskbarBackgroundAlpha.animateToValue( backgroundAlpha); if (isPinnedTaskbar) { setupPinnedTaskbarAnimation(animatorSet, showTaskbar, taskbarBgOffset, taskbarBgOffsetStart, taskbarBgOffsetEnd, duration, taskbarBackgroundAlpha); } else { taskbarBackgroundAlpha.setDuration((long) newDuration); taskbarBackgroundAlpha.setStartDelay((long) startDelay); } animatorSet.play(taskbarBackgroundAlpha); } Loading Loading @@ -671,15 +694,18 @@ public class TaskbarLauncherStateController { + mIconAlignment.value + " -> " + toAlignment + ": " + duration); } if (!isPinnedTaskbar) { if (hasAnyFlag(FLAG_TASKBAR_HIDDEN)) { iconAlignAnim.setInterpolator(FINAL_FRAME); } else { animatorSet.play(iconAlignAnim); } } } Interpolator interpolator = enableScalingRevealHomeAnimation() Interpolator interpolator = enableScalingRevealHomeAnimation() && !isPinnedTaskbar ? ScalingWorkspaceRevealAnim.SCALE_INTERPOLATOR : EMPHASIZED; animatorSet.setInterpolator(interpolator); if (start) { Loading @@ -688,6 +714,49 @@ public class TaskbarLauncherStateController { return animatorSet; } private void setupPinnedTaskbarAnimation(AnimatorSet animatorSet, boolean showTaskbar, AnimatedFloat taskbarBgOffset, float taskbarBgOffsetStart, float taskbarBgOffsetEnd, long duration, Animator taskbarBackgroundAlpha) { float targetAlpha = !showTaskbar ? 1 : 0; mLauncher.getHotseat().setIconsAlpha(targetAlpha, ALPHA_CHANNEL_TASKBAR_ALIGNMENT); if (mIsQsbInline) { mLauncher.getHotseat().setQsbAlpha(targetAlpha, ALPHA_CHANNEL_TASKBAR_ALIGNMENT); } if ((taskbarBgOffset.value != taskbarBgOffsetEnd && !taskbarBgOffset.isAnimating()) || taskbarBgOffset.isAnimatingToValue(taskbarBgOffsetStart)) { taskbarBgOffset.cancelAnimation(); Animator taskbarIconAlpha = mTaskbarAlphaForHome.animateToValue( showTaskbar ? 1f : 0f); AnimatedFloat taskbarIconTranslationYForHome = mControllers.taskbarViewController.mTaskbarIconTranslationYForHome; ObjectAnimator taskbarBackgroundOffset = taskbarBgOffset.animateToValue( taskbarBgOffsetStart, taskbarBgOffsetEnd); ObjectAnimator taskbarIconsYTranslation = null; float taskbarHeight = mControllers.taskbarActivityContext.getDeviceProfile().taskbarHeight; if (showTaskbar) { taskbarIconsYTranslation = taskbarIconTranslationYForHome.animateToValue( taskbarHeight, 0); } else { taskbarIconsYTranslation = taskbarIconTranslationYForHome.animateToValue(0, taskbarHeight); } taskbarIconAlpha.setDuration(duration); taskbarIconsYTranslation.setDuration(duration); taskbarBackgroundOffset.setDuration(duration); animatorSet.play(taskbarIconAlpha); animatorSet.play(taskbarIconsYTranslation); animatorSet.play(taskbarBackgroundOffset); } taskbarBackgroundAlpha.setInterpolator(showTaskbar ? INSTANT : FINAL_FRAME); taskbarBackgroundAlpha.setDuration(duration); } /** * Whether the taskbar is aligned with the hotseat in the current/target launcher state. * Loading Loading @@ -950,7 +1019,8 @@ public class TaskbarLauncherStateController { * * @param finishedToApp {@code true} if the recents animation finished to showing an app and * not workspace or overview * @param canceled {@code true} if the recents animation was canceled instead of finishing * @param canceled {@code true} if the recents animation was canceled instead of * finishing * to completion */ private void endGestureStateOverride(boolean finishedToApp, boolean canceled) { Loading @@ -968,6 +1038,7 @@ public class TaskbarLauncherStateController { /** * Updates the visible state immediately to ensure a seamless handoff. * * @param finishedToApp True iff user is in an app. */ private void updateStateForUserFinishedToApp(boolean finishedToApp) { Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +4 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.android.app.animation.Interpolators.INSTANT; import static com.android.app.animation.Interpolators.LINEAR; import static com.android.internal.jank.InteractionJankMonitor.Configuration; import static com.android.launcher3.Flags.enableScalingRevealHomeAnimation; import static com.android.launcher3.QuickstepTransitionManager.PINNED_TASKBAR_TRANSITION_DURATION; import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_HIDE; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_SHOW; Loading Loading @@ -398,6 +399,9 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * Returns how long the stash/unstash animation should play. */ public long getStashDuration() { if (DisplayController.isPinnedTaskbar(mActivity)) { return PINNED_TASKBAR_TRANSITION_DURATION; } return DisplayController.isTransientTaskbar(mActivity) ? TRANSIENT_TASKBAR_STASH_DURATION : TASKBAR_STASH_DURATION; Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +3 −1 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private final TaskbarView mTaskbarView; private final MultiValueAlpha mTaskbarIconAlpha; private final AnimatedFloat mTaskbarIconScaleForStash = new AnimatedFloat(this::updateScale); private final AnimatedFloat mTaskbarIconTranslationYForHome = new AnimatedFloat( public final AnimatedFloat mTaskbarIconTranslationYForHome = new AnimatedFloat( this::updateTranslationY); private final AnimatedFloat mTaskbarIconTranslationYForStash = new AnimatedFloat( this::updateTranslationY); Loading Loading @@ -796,6 +796,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar */ private AnimatorPlaybackController createIconAlignmentController(DeviceProfile launcherDp) { PendingAnimation setter = new PendingAnimation(100); // icon alignment not needed for pinned taskbar. if (DisplayController.isPinnedTaskbar(mActivity)) return setter.createPlaybackController(); mOnControllerPreCreateCallback.run(); DeviceProfile taskbarDp = mActivity.getDeviceProfile(); Rect hotseatPadding = launcherDp.getHotseatLayoutPadding(mActivity); Loading