Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd923a2b authored by Sukesh Ram's avatar Sukesh Ram Committed by Android (Google) Code Review
Browse files

Merge "Fix Taskbar Y-Translation with Visible Bottom Sheet" into main

parents 96056438 d82503fc
Loading
Loading
Loading
Loading
+39 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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.
     */
@@ -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;
    }
+17 −15
Original line number Diff line number Diff line
@@ -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);
@@ -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 */
@@ -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
@@ -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="
+8 −0
Original line number Diff line number Diff line
@@ -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.
     */
+1 −1
Original line number Diff line number Diff line
@@ -234,7 +234,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar
        mTaskbarNavButtonTranslationY =
                controllers.navbarButtonsViewController.getTaskbarNavButtonTranslationY();
        mTaskbarNavButtonTranslationYForInAppDisplay = controllers.navbarButtonsViewController
                .getTaskbarNavButtonTranslationYForInAppDisplay();
                .getNavButtonTranslationYForInAppDisplay();

        mActivity.addOnDeviceProfileChangeListener(mDeviceProfileChangeListener);

+2 −4
Original line number Diff line number Diff line
@@ -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