diff --git a/quickstep/res/layout/taskbar.xml b/quickstep/res/layout/taskbar.xml index 83ad9f33e5..94d7d2bba0 100644 --- a/quickstep/res/layout/taskbar.xml +++ b/quickstep/res/layout/taskbar.xml @@ -42,6 +42,7 @@ android:layout_height="match_parent" android:paddingLeft="@dimen/taskbar_nav_buttons_spacing" android:paddingRight="@dimen/taskbar_nav_buttons_spacing" + android:paddingTop="@dimen/taskbar_contextual_padding_top" android:gravity="center_vertical" android:layout_gravity="start"/> @@ -62,6 +63,7 @@ android:layout_height="match_parent" android:paddingLeft="@dimen/taskbar_nav_buttons_spacing" android:paddingRight="@dimen/taskbar_nav_buttons_spacing" + android:paddingTop="@dimen/taskbar_contextual_padding_top" android:gravity="center_vertical" android:layout_gravity="end"/> diff --git a/quickstep/res/layout/taskbar_contextual_button.xml b/quickstep/res/layout/taskbar_contextual_button.xml index cbbbfabc45..4ffb8d81dc 100644 --- a/quickstep/res/layout/taskbar_contextual_button.xml +++ b/quickstep/res/layout/taskbar_contextual_button.xml @@ -15,9 +15,7 @@ --> \ No newline at end of file diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index e903377101..a6a6bbd158 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -165,8 +165,10 @@ 54dp 16dp 16dp - 48dp - 16dp + 8dp + 44dp + 40dp + 42dp 35dp 24dp 220dp diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 6bc49ed076..16dcf465ca 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -62,7 +62,6 @@ import java.util.stream.Stream; public class LauncherTaskbarUIController extends TaskbarUIController { private final BaseQuickstepLauncher mLauncher; - private final TaskbarStateHandler mTaskbarStateHandler; private final TaskbarActivityContext mContext; private final TaskbarDragLayer mTaskbarDragLayer; @@ -96,6 +95,14 @@ public class LauncherTaskbarUIController extends TaskbarUIController { private TaskbarKeyguardController mKeyguardController; private LauncherState mTargetStateOverride = null; + private final DeviceProfile.OnDeviceProfileChangeListener mProfileChangeListener = + new DeviceProfile.OnDeviceProfileChangeListener() { + @Override + public void onDeviceProfileChanged(DeviceProfile dp) { + mControllers.taskbarViewController.onRotationChanged( + mLauncher.getDeviceProfile()); + } + }; public LauncherTaskbarUIController( BaseQuickstepLauncher launcher, TaskbarActivityContext context) { @@ -104,7 +111,6 @@ public class LauncherTaskbarUIController extends TaskbarUIController { mTaskbarView = mTaskbarDragLayer.findViewById(R.id.taskbar_view); mLauncher = launcher; - mTaskbarStateHandler = mLauncher.getTaskbarStateHandler(); } @Override @@ -129,6 +135,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { onStashedInAppChanged(mLauncher.getDeviceProfile()); mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); mLauncher.getStateManager().addStateListener(mStateListener); + mLauncher.addOnDeviceProfileChangeListener(mProfileChangeListener); } @Override @@ -141,6 +148,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { mLauncher.getStateManager().removeStateListener(mStateListener); mLauncher.getHotseat().setIconsAlpha(1f); mLauncher.setTaskbarUIController(null); + mLauncher.removeOnDeviceProfileChangeListener(mProfileChangeListener); } @Override diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index 4b75db4fbe..67bec49fb4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -95,6 +95,9 @@ public class NavbarButtonsViewController { private final ViewGroup mEndContextualContainer; private final ViewGroup mStartContextualContainer; + private final AnimatedFloat mTaskbarNavButtonTranslationY = new AnimatedFloat( + this::updateNavButtonTranslationY); + // Initialized in init. private TaskbarControllers mControllers; private View mA11yButton; @@ -133,8 +136,7 @@ public class NavbarButtonsViewController { mControllers.navButtonController, R.id.ime_switcher); mPropertyHolders.add(new StatePropertyHolder(imeSwitcherButton, flags -> ((flags & MASK_IME_SWITCHER_VISIBLE) == MASK_IME_SWITCHER_VISIBLE) - && ((flags & FLAG_ROTATION_BUTTON_VISIBLE) == 0) - && ((flags & FLAG_A11Y_VISIBLE) == 0))); + && ((flags & FLAG_ROTATION_BUTTON_VISIBLE) == 0))); mPropertyHolders.add(new StatePropertyHolder( mControllers.taskbarViewController.getTaskbarIconAlpha() @@ -305,6 +307,11 @@ public class NavbarButtonsViewController { } } + /** Use to set the translationY for the all nav+contextual buttons */ + public AnimatedFloat getTaskbarNavButtonTranslationY() { + return mTaskbarNavButtonTranslationY; + } + /** * Does not call {@link #applyState()}. Don't forget to! */ @@ -323,6 +330,10 @@ public class NavbarButtonsViewController { } } + private void updateNavButtonTranslationY() { + mNavButtonsView.setTranslationY(mTaskbarNavButtonTranslationY.value); + } + private ImageView addButton(@DrawableRes int drawableId, @TaskbarButton int buttonType, ViewGroup parent, TaskbarNavButtonController navButtonController, @IdRes int id) { return addButton(drawableId, buttonType, parent, navButtonController, id, diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index ed09fa5984..ff04799c92 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -60,6 +60,7 @@ public class TaskbarViewController { this::updateTranslationY); private final AnimatedFloat mTaskbarIconTranslationYForStash = new AnimatedFloat( this::updateTranslationY); + private AnimatedFloat mTaskbarNavButtonTranslationY; private final TaskbarModelCallbacks mModelCallbacks; @@ -88,6 +89,8 @@ public class TaskbarViewController { mModelCallbacks.init(controllers); LauncherAppState.getInstance(mActivity).getModel().addCallbacksAndLoad(mModelCallbacks); + mTaskbarNavButtonTranslationY = + controllers.navbarButtonsViewController.getTaskbarNavButtonTranslationY(); } public void onDestroy() { @@ -214,6 +217,7 @@ public class TaskbarViewController { int offsetY = launcherDp.getTaskbarOffsetY(); setter.setFloat(mTaskbarIconTranslationYForHome, VALUE, -offsetY, LINEAR); + setter.setFloat(mTaskbarNavButtonTranslationY, VALUE, -offsetY, LINEAR); int collapsedHeight = mActivity.getDefaultTaskbarWindowHeight(); int expandedHeight = Math.max(collapsedHeight, @@ -238,6 +242,14 @@ public class TaskbarViewController { return controller; } + public void onRotationChanged(DeviceProfile deviceProfile) { + if (areIconsVisible()) { + // We only translate on rotation when on home + return; + } + mTaskbarNavButtonTranslationY.updateValue(-deviceProfile.getTaskbarOffsetY()); + } + /** * Callbacks for {@link TaskbarView} to interact with its controller. */ diff --git a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java index c9909cc2a1..aa26645eb9 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java +++ b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java @@ -57,13 +57,13 @@ public class ApiWrapper { if (SysUINavigationMode.INSTANCE.get(context).getMode() == Mode.THREE_BUTTONS) { Resources res = context.getResources(); /* - * 2 (left + right) x Padding + * 3 nav buttons + - * Little space at the end for contextual buttons + * Little space at the end for contextual buttons + + * Little space between icons and nav buttons */ - return 2 * res.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_spacing) - + 3 * res.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size) - + res.getDimensionPixelSize(R.dimen.taskbar_contextual_button_margin); + return 3 * res.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size) + + res.getDimensionPixelSize(R.dimen.taskbar_contextual_button_margin) + + res.getDimensionPixelSize(R.dimen.taskbar_hotseat_nav_spacing); } else { return 0; }