diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index ce1e8b6b6e..319833d275 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -233,6 +233,14 @@ public class NavbarButtonsViewController { mPropertyHolders.forEach(StatePropertyHolder::endAnimation); } + public void onDestroy() { + mPropertyHolders.clear(); + mControllers.rotationButtonController.unregisterListeners(); + if (mFloatingRotationButton != null) { + mFloatingRotationButton.hide(); + } + } + private void initButtons(ViewGroup navContainer, ViewGroup endContainer, TaskbarNavButtonController navButtonController) { @@ -458,14 +466,6 @@ public class NavbarButtonsViewController { } } - public void onDestroy() { - mPropertyHolders.clear(); - mControllers.rotationButtonController.unregisterListeners(); - if (mFloatingRotationButton != null) { - mFloatingRotationButton.hide(); - } - } - private class RotationButtonListener implements RotationButton.RotationButtonUpdatesCallback { @Override public void onVisibilityChanged(boolean isVisible) { diff --git a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java index 81c07a6a64..cbbe3eb74c 100644 --- a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java +++ b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java @@ -16,6 +16,8 @@ package com.android.quickstep.views; +import static com.android.quickstep.SysUINavigationMode.Mode.THREE_BUTTONS; + import android.content.Context; import android.content.res.Configuration; import android.graphics.Rect; @@ -31,6 +33,7 @@ import androidx.annotation.Nullable; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Insettable; import com.android.launcher3.R; +import com.android.launcher3.uioverrides.ApiWrapper; import com.android.launcher3.util.MultiValueAlpha; import com.android.launcher3.util.MultiValueAlpha.AlphaProperty; import com.android.quickstep.SysUINavigationMode; @@ -150,7 +153,7 @@ public class OverviewActionsView extends FrameLayo public void setInsets(Rect insets) { mInsets.set(insets); updateVerticalMargin(SysUINavigationMode.getMode(getContext())); - updateHorizontalPadding(); + updatePaddingAndTranslations(); } public void updateHiddenFlags(@ActionsHiddenFlags int visibilityFlags, boolean enable) { @@ -193,8 +196,37 @@ public class OverviewActionsView extends FrameLayo return mMultiValueAlpha.getProperty(INDEX_FULLSCREEN_ALPHA); } - private void updateHorizontalPadding() { - setPadding(mInsets.left, 0, mInsets.right, 0); + /** + * Aligns OverviewActionsView vertically with and offsets horizontal position based on + * 3 button nav container in taskbar. + */ + private void updatePaddingAndTranslations() { + boolean alignFor3ButtonTaskbar = mDp.isTaskbarPresent && + SysUINavigationMode.getMode(getContext()) == THREE_BUTTONS; + if (alignFor3ButtonTaskbar) { + // Add extra horizontal spacing + int additionalPadding = ApiWrapper.getHotseatEndOffset(getContext()); + if (isLayoutRtl()) { + setPadding(mInsets.left + additionalPadding, 0, mInsets.right, 0); + } else { + setPadding(mInsets.left, 0, mInsets.right + additionalPadding, 0); + } + + // Align vertically, using taskbar height + mDp.taskbarOffsetY() to guestimate + // where the button nav top is + View startActionView = findViewById(R.id.action_screenshot); + int marginBottom = getOverviewActionsBottomMarginPx( + SysUINavigationMode.getMode(getContext()), mDp); + int actionsTop = (mDp.heightPx - marginBottom - mInsets.bottom); + int navTop = mDp.heightPx - (mDp.taskbarSize + mDp.getTaskbarOffsetY()); + int transY = navTop - actionsTop + + ((mDp.taskbarSize - startActionView.getHeight()) / 2); + setTranslationY(transY); + } else { + setPadding(mInsets.left, 0, mInsets.right, 0); + setTranslationX(0); + setTranslationY(0); + } } /** Updates vertical margins for different navigation mode or configuration changes. */ diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 2ad586d2f2..8c98c38431 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -1148,7 +1148,7 @@ public abstract class RecentsView