Loading quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +39 −6 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.launcher3.Flags; import com.android.launcher3.LauncherState; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.logging.InstanceId; import com.android.launcher3.logging.InstanceIdSequence; import com.android.launcher3.model.data.ItemInfo; Loading Loading @@ -68,14 +69,17 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public static final int ALL_APPS_PAGE_PROGRESS_INDEX = 1; public static final int WIDGETS_PAGE_PROGRESS_INDEX = 2; public static final int SYSUI_SURFACE_PROGRESS_INDEX = 3; public static final int LAUNCHER_PAUSE_PROGRESS_INDEX = 4; public static final int DISPLAY_PROGRESS_COUNT = 4; public static final int DISPLAY_PROGRESS_COUNT = 5; private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat( this::onInAppDisplayProgressChanged); private final MultiPropertyFactory<AnimatedFloat> mTaskbarInAppDisplayProgressMultiProp = new MultiPropertyFactory<>(mTaskbarInAppDisplayProgress, AnimatedFloat.VALUE, DISPLAY_PROGRESS_COUNT, Float::max); private final AnimatedFloat mLauncherPauseProgress = new AnimatedFloat( this::launcherPauseProgressUpdate); private final QuickstepLauncher mLauncher; private final HomeVisibilityState mHomeState; Loading Loading @@ -190,6 +194,33 @@ public class LauncherTaskbarUIController extends TaskbarUIController { placeholderDuration)); } /** * Called when Launcher Activity is paused/resumed. * <p> * To avoid UI clash between taskbar & bottom sheet, shift nav buttons down on launcher * pause/resume at home. * @param paused if launcher is currently paused. */ public void onLauncherPausedOrResumed(boolean paused) { if (!FeatureFlags.enableHomeTransitionListener()) { onLauncherVisibilityChanged(mLauncher.hasBeenResumed()); return; } // Animate navbar iff pause/resume from home, NOT to/from app (avoid overriding existing // animations). boolean launcherPauseOrResumeFromHome = mHomeState.isHomeVisible() && mControllers .taskbarAutohideSuspendController.isSuspendedForTransientTaskbarInLauncher(); if (launcherPauseOrResumeFromHome) { mLauncherPauseProgress.animateToValue(paused ? 1.0f : 0.0f).start(); } } private void launcherPauseProgressUpdate() { onTaskbarInAppDisplayProgressUpdate( mLauncherPauseProgress.value, LAUNCHER_PAUSE_PROGRESS_INDEX); } /** * Should be called from onResume() and onPause(), and animates the Taskbar accordingly. */ Loading Loading @@ -364,18 +395,20 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } if (mControllers.uiController.isIconAlignedWithHotseat() && !mTaskbarLauncherStateController.isAnimatingToLauncher()) { // Only animate the nav buttons while home and not animating home, otherwise let // Only animate nav button position while home and not animating home, otherwise let // the TaskbarViewController handle it. mControllers.navbarButtonsViewController .getTaskbarNavButtonTranslationYForInAppDisplay() .getNavButtonTranslationYForInAppDisplay() .updateValue(mLauncher.getDeviceProfile().getTaskbarOffsetY() * mTaskbarInAppDisplayProgress.value); if (!mLauncher.isPaused()) { mControllers.navbarButtonsViewController .getOnTaskbarBackgroundNavButtonColorOverride().updateValue(progress); } } } /** Returns true iff any in-app display progress > 0. */ @Override public boolean shouldUseInAppLayout() { return mTaskbarInAppDisplayProgress.value > 0; } Loading quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +17 −15 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT private final AnimatedFloat mTaskbarNavButtonTranslationY = new AnimatedFloat( this::updateNavButtonTranslationY); private final AnimatedFloat mTaskbarNavButtonTranslationYForInAppDisplay = new AnimatedFloat( private final AnimatedFloat mNavButtonTranslationYForInAppDisplay = new AnimatedFloat( this::updateNavButtonTranslationY); private final AnimatedFloat mTaskbarNavButtonTranslationYForIme = new AnimatedFloat( this::updateNavButtonTranslationY); Loading Loading @@ -704,8 +704,8 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT } /** Use to set the translationY for the all nav+contextual buttons when in Launcher */ public AnimatedFloat getTaskbarNavButtonTranslationYForInAppDisplay() { return mTaskbarNavButtonTranslationYForInAppDisplay; public AnimatedFloat getNavButtonTranslationYForInAppDisplay() { return mNavButtonTranslationYForInAppDisplay; } /** Use to set the dark intensity for the all nav+contextual buttons */ Loading Loading @@ -751,20 +751,22 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT if (mContext.isPhoneButtonNavMode()) { return; } final float normalTranslationY = mTaskbarNavButtonTranslationY.value; final float imeAdjustmentTranslationY = mTaskbarNavButtonTranslationYForIme.value; TaskbarUIController uiController = mControllers.uiController; final float inAppDisplayAdjustmentTranslationY = (uiController instanceof LauncherTaskbarUIController && ((LauncherTaskbarUIController) uiController).shouldUseInAppLayout()) ? mTaskbarNavButtonTranslationYForInAppDisplay.value : 0; mLastSetNavButtonTranslationY = normalTranslationY + imeAdjustmentTranslationY + inAppDisplayAdjustmentTranslationY; mLastSetNavButtonTranslationY = calculateNavButtonTranslationY(); mNavButtonsView.setTranslationY(mLastSetNavButtonTranslationY); } /** * Calculates the translationY of the nav buttons based on the current device state. */ private float calculateNavButtonTranslationY() { float translationY = mTaskbarNavButtonTranslationY.value + mTaskbarNavButtonTranslationYForIme.value; if (mControllers.uiController.shouldUseInAppLayout()) { translationY += mNavButtonTranslationYForInAppDisplay.value; } return translationY; } /** * Sets Taskbar 3-button mode icon colors based on the * {@link #mTaskbarNavButtonDarkIntensity} value piped in from Framework. For certain cases Loading Loading @@ -1162,7 +1164,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT pw.println(prefix + "\t\tmTaskbarNavButtonTranslationY=" + mTaskbarNavButtonTranslationY.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForInAppDisplay=" + mTaskbarNavButtonTranslationYForInAppDisplay.value); + mNavButtonTranslationYForInAppDisplay.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForIme=" + mTaskbarNavButtonTranslationYForIme.value); pw.println(prefix + "\t\tmTaskbarNavButtonDarkIntensity=" Loading quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +8 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,14 @@ public class TaskbarUIController implements BubbleBarController.BubbleBarLocatio protected void onStashedInAppChanged() { } /** * Whether the Taskbar should use in-app layout. * @return {@code true} iff in-app display progress > 0 or Launcher Activity paused. */ public boolean shouldUseInAppLayout() { return false; } /** * Called when taskbar icon layout bounds change. */ Loading quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +1 −1 Original line number Diff line number Diff line Loading @@ -234,7 +234,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar mTaskbarNavButtonTranslationY = controllers.navbarButtonsViewController.getTaskbarNavButtonTranslationY(); mTaskbarNavButtonTranslationYForInAppDisplay = controllers.navbarButtonsViewController .getTaskbarNavButtonTranslationYForInAppDisplay(); .getNavButtonTranslationYForInAppDisplay(); mActivity.addOnDeviceProfileChangeListener(mDeviceProfileChangeListener); Loading quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +2 −4 Original line number Diff line number Diff line Loading @@ -419,10 +419,8 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer, mDepthController.setActivityStarted(isStarted()); } if ((changeBits & ACTIVITY_STATE_RESUMED) != 0) { if (!FeatureFlags.enableHomeTransitionListener() && mTaskbarUIController != null) { mTaskbarUIController.onLauncherVisibilityChanged(hasBeenResumed()); } if ((changeBits & ACTIVITY_STATE_RESUMED) != 0 && mTaskbarUIController != null) { mTaskbarUIController.onLauncherPausedOrResumed(isPaused()); } super.onActivityFlagsChanged(changeBits); Loading Loading
quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +39 −6 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.launcher3.Flags; import com.android.launcher3.LauncherState; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.logging.InstanceId; import com.android.launcher3.logging.InstanceIdSequence; import com.android.launcher3.model.data.ItemInfo; Loading Loading @@ -68,14 +69,17 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public static final int ALL_APPS_PAGE_PROGRESS_INDEX = 1; public static final int WIDGETS_PAGE_PROGRESS_INDEX = 2; public static final int SYSUI_SURFACE_PROGRESS_INDEX = 3; public static final int LAUNCHER_PAUSE_PROGRESS_INDEX = 4; public static final int DISPLAY_PROGRESS_COUNT = 4; public static final int DISPLAY_PROGRESS_COUNT = 5; private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat( this::onInAppDisplayProgressChanged); private final MultiPropertyFactory<AnimatedFloat> mTaskbarInAppDisplayProgressMultiProp = new MultiPropertyFactory<>(mTaskbarInAppDisplayProgress, AnimatedFloat.VALUE, DISPLAY_PROGRESS_COUNT, Float::max); private final AnimatedFloat mLauncherPauseProgress = new AnimatedFloat( this::launcherPauseProgressUpdate); private final QuickstepLauncher mLauncher; private final HomeVisibilityState mHomeState; Loading Loading @@ -190,6 +194,33 @@ public class LauncherTaskbarUIController extends TaskbarUIController { placeholderDuration)); } /** * Called when Launcher Activity is paused/resumed. * <p> * To avoid UI clash between taskbar & bottom sheet, shift nav buttons down on launcher * pause/resume at home. * @param paused if launcher is currently paused. */ public void onLauncherPausedOrResumed(boolean paused) { if (!FeatureFlags.enableHomeTransitionListener()) { onLauncherVisibilityChanged(mLauncher.hasBeenResumed()); return; } // Animate navbar iff pause/resume from home, NOT to/from app (avoid overriding existing // animations). boolean launcherPauseOrResumeFromHome = mHomeState.isHomeVisible() && mControllers .taskbarAutohideSuspendController.isSuspendedForTransientTaskbarInLauncher(); if (launcherPauseOrResumeFromHome) { mLauncherPauseProgress.animateToValue(paused ? 1.0f : 0.0f).start(); } } private void launcherPauseProgressUpdate() { onTaskbarInAppDisplayProgressUpdate( mLauncherPauseProgress.value, LAUNCHER_PAUSE_PROGRESS_INDEX); } /** * Should be called from onResume() and onPause(), and animates the Taskbar accordingly. */ Loading Loading @@ -364,18 +395,20 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } if (mControllers.uiController.isIconAlignedWithHotseat() && !mTaskbarLauncherStateController.isAnimatingToLauncher()) { // Only animate the nav buttons while home and not animating home, otherwise let // Only animate nav button position while home and not animating home, otherwise let // the TaskbarViewController handle it. mControllers.navbarButtonsViewController .getTaskbarNavButtonTranslationYForInAppDisplay() .getNavButtonTranslationYForInAppDisplay() .updateValue(mLauncher.getDeviceProfile().getTaskbarOffsetY() * mTaskbarInAppDisplayProgress.value); if (!mLauncher.isPaused()) { mControllers.navbarButtonsViewController .getOnTaskbarBackgroundNavButtonColorOverride().updateValue(progress); } } } /** Returns true iff any in-app display progress > 0. */ @Override public boolean shouldUseInAppLayout() { return mTaskbarInAppDisplayProgress.value > 0; } Loading
quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +17 −15 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT private final AnimatedFloat mTaskbarNavButtonTranslationY = new AnimatedFloat( this::updateNavButtonTranslationY); private final AnimatedFloat mTaskbarNavButtonTranslationYForInAppDisplay = new AnimatedFloat( private final AnimatedFloat mNavButtonTranslationYForInAppDisplay = new AnimatedFloat( this::updateNavButtonTranslationY); private final AnimatedFloat mTaskbarNavButtonTranslationYForIme = new AnimatedFloat( this::updateNavButtonTranslationY); Loading Loading @@ -704,8 +704,8 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT } /** Use to set the translationY for the all nav+contextual buttons when in Launcher */ public AnimatedFloat getTaskbarNavButtonTranslationYForInAppDisplay() { return mTaskbarNavButtonTranslationYForInAppDisplay; public AnimatedFloat getNavButtonTranslationYForInAppDisplay() { return mNavButtonTranslationYForInAppDisplay; } /** Use to set the dark intensity for the all nav+contextual buttons */ Loading Loading @@ -751,20 +751,22 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT if (mContext.isPhoneButtonNavMode()) { return; } final float normalTranslationY = mTaskbarNavButtonTranslationY.value; final float imeAdjustmentTranslationY = mTaskbarNavButtonTranslationYForIme.value; TaskbarUIController uiController = mControllers.uiController; final float inAppDisplayAdjustmentTranslationY = (uiController instanceof LauncherTaskbarUIController && ((LauncherTaskbarUIController) uiController).shouldUseInAppLayout()) ? mTaskbarNavButtonTranslationYForInAppDisplay.value : 0; mLastSetNavButtonTranslationY = normalTranslationY + imeAdjustmentTranslationY + inAppDisplayAdjustmentTranslationY; mLastSetNavButtonTranslationY = calculateNavButtonTranslationY(); mNavButtonsView.setTranslationY(mLastSetNavButtonTranslationY); } /** * Calculates the translationY of the nav buttons based on the current device state. */ private float calculateNavButtonTranslationY() { float translationY = mTaskbarNavButtonTranslationY.value + mTaskbarNavButtonTranslationYForIme.value; if (mControllers.uiController.shouldUseInAppLayout()) { translationY += mNavButtonTranslationYForInAppDisplay.value; } return translationY; } /** * Sets Taskbar 3-button mode icon colors based on the * {@link #mTaskbarNavButtonDarkIntensity} value piped in from Framework. For certain cases Loading Loading @@ -1162,7 +1164,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT pw.println(prefix + "\t\tmTaskbarNavButtonTranslationY=" + mTaskbarNavButtonTranslationY.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForInAppDisplay=" + mTaskbarNavButtonTranslationYForInAppDisplay.value); + mNavButtonTranslationYForInAppDisplay.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForIme=" + mTaskbarNavButtonTranslationYForIme.value); pw.println(prefix + "\t\tmTaskbarNavButtonDarkIntensity=" Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +8 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,14 @@ public class TaskbarUIController implements BubbleBarController.BubbleBarLocatio protected void onStashedInAppChanged() { } /** * Whether the Taskbar should use in-app layout. * @return {@code true} iff in-app display progress > 0 or Launcher Activity paused. */ public boolean shouldUseInAppLayout() { return false; } /** * Called when taskbar icon layout bounds change. */ Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +1 −1 Original line number Diff line number Diff line Loading @@ -234,7 +234,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar mTaskbarNavButtonTranslationY = controllers.navbarButtonsViewController.getTaskbarNavButtonTranslationY(); mTaskbarNavButtonTranslationYForInAppDisplay = controllers.navbarButtonsViewController .getTaskbarNavButtonTranslationYForInAppDisplay(); .getNavButtonTranslationYForInAppDisplay(); mActivity.addOnDeviceProfileChangeListener(mDeviceProfileChangeListener); Loading
quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +2 −4 Original line number Diff line number Diff line Loading @@ -419,10 +419,8 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer, mDepthController.setActivityStarted(isStarted()); } if ((changeBits & ACTIVITY_STATE_RESUMED) != 0) { if (!FeatureFlags.enableHomeTransitionListener() && mTaskbarUIController != null) { mTaskbarUIController.onLauncherVisibilityChanged(hasBeenResumed()); } if ((changeBits & ACTIVITY_STATE_RESUMED) != 0 && mTaskbarUIController != null) { mTaskbarUIController.onLauncherPausedOrResumed(isPaused()); } super.onActivityFlagsChanged(changeBits); Loading