Loading quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +24 −4 Original line number Diff line number Diff line Loading @@ -66,9 +66,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public static final int WIDGETS_PAGE_PROGRESS_INDEX = 2; public static final int SYSUI_SURFACE_PROGRESS_INDEX = 3; private static final int DISPLAY_PROGRESS_COUNT = 4; public static final int DISPLAY_PROGRESS_COUNT = 4; private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat(); private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat( this::onInAppDisplayProgressChanged); private final MultiPropertyFactory<AnimatedFloat> mTaskbarInAppDisplayProgressMultiProp = new MultiPropertyFactory<>(mTaskbarInAppDisplayProgress, AnimatedFloat.VALUE, DISPLAY_PROGRESS_COUNT, Float::max); Loading Loading @@ -105,6 +106,12 @@ public class LauncherTaskbarUIController extends TaskbarUIController { mTaskbarLauncherStateController.updateStateForSysuiFlags( mControllers.getSharedState().sysuiStateFlags, true /* fromInit */); mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); // Restore the in-app display progress from before Taskbar was recreated. float[] prevProgresses = mControllers.getSharedState().inAppDisplayProgressMultiPropValues; for (int i = 0; i < prevProgresses.length; i++) { mTaskbarInAppDisplayProgressMultiProp.get(i).setValue(prevProgresses[i]); } } @Override Loading @@ -118,6 +125,18 @@ public class LauncherTaskbarUIController extends TaskbarUIController { updateTaskTransitionSpec(true); } private void onInAppDisplayProgressChanged() { if (mControllers != null) { // Update our shared state so we can restore it if taskbar gets recreated. for (int i = 0; i < DISPLAY_PROGRESS_COUNT; i++) { mControllers.getSharedState().inAppDisplayProgressMultiPropValues[i] = mTaskbarInAppDisplayProgressMultiProp.get(i).getValue(); } // Ensure nav buttons react to our latest state if necessary. mControllers.navbarButtonsViewController.updateNavButtonTranslationY(); } } @Override protected boolean isTaskbarTouchable() { return !(mTaskbarLauncherStateController.isAnimatingToLauncher() Loading Loading @@ -360,9 +379,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public void dumpLogs(String prefix, PrintWriter pw) { super.dumpLogs(prefix, pw); pw.println(String.format("%s\tTaskbar in-app display progress:", prefix)); pw.println(String.format("%s\tTaskbar in-app display progress: %.2f", prefix, mTaskbarInAppDisplayProgress.value)); mTaskbarInAppDisplayProgressMultiProp.dump( prefix + "\t", prefix + "\t\t", pw, "mTaskbarInAppDisplayProgressMultiProp", "MINUS_ONE_PAGE_PROGRESS_INDEX", Loading quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +15 −3 Original line number Diff line number Diff line Loading @@ -159,6 +159,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT this::updateNavButtonTranslationY); private final AnimatedFloat mTaskbarNavButtonTranslationYForIme = new AnimatedFloat( this::updateNavButtonTranslationY); private float mLastSetNavButtonTranslationY; // Used for System UI state updates that should translate the nav button for in-app display. private final AnimatedFloat mNavButtonInAppDisplayProgressForSysui = new AnimatedFloat( this::updateNavButtonInAppDisplayProgressForSysui); Loading Loading @@ -606,7 +607,10 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT } } private void updateNavButtonTranslationY() { /** * Sets the translationY of the nav buttons based on the current device state. */ public void updateNavButtonTranslationY() { if (isPhoneButtonNavMode(mContext)) { return; } Loading @@ -618,9 +622,10 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT && ((LauncherTaskbarUIController) uiController).shouldUseInAppLayout()) ? mTaskbarNavButtonTranslationYForInAppDisplay.value : 0; mNavButtonsView.setTranslationY(normalTranslationY mLastSetNavButtonTranslationY = normalTranslationY + imeAdjustmentTranslationY + inAppDisplayAdjustmentTranslationY); + inAppDisplayAdjustmentTranslationY; mNavButtonsView.setTranslationY(mLastSetNavButtonTranslationY); } private void updateNavButtonColor() { Loading Loading @@ -924,6 +929,13 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT pw.println(prefix + "\tmFloatingRotationButtonBounds=" + mFloatingRotationButtonBounds); pw.println(prefix + "\tmSysuiStateFlags=" + QuickStepContract.getSystemUiStateString( mSysuiStateFlags)); pw.println(prefix + "\tLast set nav button translationY=" + mLastSetNavButtonTranslationY); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationY=" + mTaskbarNavButtonTranslationY.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForInAppDisplay=" + mTaskbarNavButtonTranslationYForInAppDisplay.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForIme=" + mTaskbarNavButtonTranslationYForIme.value); } private static String getStateString(int flags) { Loading quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java +5 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.launcher3.taskbar; import static com.android.launcher3.taskbar.LauncherTaskbarUIController.DISPLAY_PROGRESS_COUNT; /** * State shared across different taskbar instance */ Loading @@ -38,4 +40,7 @@ public class TaskbarSharedState { public boolean setupUIVisible = false; public boolean allAppsVisible = false; // LauncherTaskbarUIController#mTaskbarInAppDisplayProgressMultiProp public float[] inAppDisplayProgressMultiPropValues = new float[DISPLAY_PROGRESS_COUNT]; } Loading
quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +24 −4 Original line number Diff line number Diff line Loading @@ -66,9 +66,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public static final int WIDGETS_PAGE_PROGRESS_INDEX = 2; public static final int SYSUI_SURFACE_PROGRESS_INDEX = 3; private static final int DISPLAY_PROGRESS_COUNT = 4; public static final int DISPLAY_PROGRESS_COUNT = 4; private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat(); private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat( this::onInAppDisplayProgressChanged); private final MultiPropertyFactory<AnimatedFloat> mTaskbarInAppDisplayProgressMultiProp = new MultiPropertyFactory<>(mTaskbarInAppDisplayProgress, AnimatedFloat.VALUE, DISPLAY_PROGRESS_COUNT, Float::max); Loading Loading @@ -105,6 +106,12 @@ public class LauncherTaskbarUIController extends TaskbarUIController { mTaskbarLauncherStateController.updateStateForSysuiFlags( mControllers.getSharedState().sysuiStateFlags, true /* fromInit */); mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); // Restore the in-app display progress from before Taskbar was recreated. float[] prevProgresses = mControllers.getSharedState().inAppDisplayProgressMultiPropValues; for (int i = 0; i < prevProgresses.length; i++) { mTaskbarInAppDisplayProgressMultiProp.get(i).setValue(prevProgresses[i]); } } @Override Loading @@ -118,6 +125,18 @@ public class LauncherTaskbarUIController extends TaskbarUIController { updateTaskTransitionSpec(true); } private void onInAppDisplayProgressChanged() { if (mControllers != null) { // Update our shared state so we can restore it if taskbar gets recreated. for (int i = 0; i < DISPLAY_PROGRESS_COUNT; i++) { mControllers.getSharedState().inAppDisplayProgressMultiPropValues[i] = mTaskbarInAppDisplayProgressMultiProp.get(i).getValue(); } // Ensure nav buttons react to our latest state if necessary. mControllers.navbarButtonsViewController.updateNavButtonTranslationY(); } } @Override protected boolean isTaskbarTouchable() { return !(mTaskbarLauncherStateController.isAnimatingToLauncher() Loading Loading @@ -360,9 +379,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public void dumpLogs(String prefix, PrintWriter pw) { super.dumpLogs(prefix, pw); pw.println(String.format("%s\tTaskbar in-app display progress:", prefix)); pw.println(String.format("%s\tTaskbar in-app display progress: %.2f", prefix, mTaskbarInAppDisplayProgress.value)); mTaskbarInAppDisplayProgressMultiProp.dump( prefix + "\t", prefix + "\t\t", pw, "mTaskbarInAppDisplayProgressMultiProp", "MINUS_ONE_PAGE_PROGRESS_INDEX", Loading
quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +15 −3 Original line number Diff line number Diff line Loading @@ -159,6 +159,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT this::updateNavButtonTranslationY); private final AnimatedFloat mTaskbarNavButtonTranslationYForIme = new AnimatedFloat( this::updateNavButtonTranslationY); private float mLastSetNavButtonTranslationY; // Used for System UI state updates that should translate the nav button for in-app display. private final AnimatedFloat mNavButtonInAppDisplayProgressForSysui = new AnimatedFloat( this::updateNavButtonInAppDisplayProgressForSysui); Loading Loading @@ -606,7 +607,10 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT } } private void updateNavButtonTranslationY() { /** * Sets the translationY of the nav buttons based on the current device state. */ public void updateNavButtonTranslationY() { if (isPhoneButtonNavMode(mContext)) { return; } Loading @@ -618,9 +622,10 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT && ((LauncherTaskbarUIController) uiController).shouldUseInAppLayout()) ? mTaskbarNavButtonTranslationYForInAppDisplay.value : 0; mNavButtonsView.setTranslationY(normalTranslationY mLastSetNavButtonTranslationY = normalTranslationY + imeAdjustmentTranslationY + inAppDisplayAdjustmentTranslationY); + inAppDisplayAdjustmentTranslationY; mNavButtonsView.setTranslationY(mLastSetNavButtonTranslationY); } private void updateNavButtonColor() { Loading Loading @@ -924,6 +929,13 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT pw.println(prefix + "\tmFloatingRotationButtonBounds=" + mFloatingRotationButtonBounds); pw.println(prefix + "\tmSysuiStateFlags=" + QuickStepContract.getSystemUiStateString( mSysuiStateFlags)); pw.println(prefix + "\tLast set nav button translationY=" + mLastSetNavButtonTranslationY); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationY=" + mTaskbarNavButtonTranslationY.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForInAppDisplay=" + mTaskbarNavButtonTranslationYForInAppDisplay.value); pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForIme=" + mTaskbarNavButtonTranslationYForIme.value); } private static String getStateString(int flags) { Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java +5 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.launcher3.taskbar; import static com.android.launcher3.taskbar.LauncherTaskbarUIController.DISPLAY_PROGRESS_COUNT; /** * State shared across different taskbar instance */ Loading @@ -38,4 +40,7 @@ public class TaskbarSharedState { public boolean setupUIVisible = false; public boolean allAppsVisible = false; // LauncherTaskbarUIController#mTaskbarInAppDisplayProgressMultiProp public float[] inAppDisplayProgressMultiPropValues = new float[DISPLAY_PROGRESS_COUNT]; }