Update placement of the hotseat according to the bubble bar location.
Update the hotseat and Qsb placement according to the 3 nav buttons bar. Test: Manual. Set navigation mode to 3 buttons. On launcher home screen move the bubble bar from one side to another. Observe that the Hotseat and Qsb moving together with the navigation bar. Once moved the bubble bar, expand the bubble bar and collapse it. Observe how the Hotseat is stashing and un-stashing. After bubble bar changes position hit the recent apps button, observe the transition. On launcher home screen start application with the hotseat icon and exit opened application. Observe that flying icon comes back to the correct position in the hotseat. Video with the above scenarios: http://recall/-/gx8ASgewUeUS3QYohfrd1J/blTYrKopTyufOcRoPuVpYK Bug: 346381754 Flag: com.android.wm.shell.enable_bubble_bar_in_persistent_task_bar Change-Id: Ic8c6acdffbbb111cbe4f3fd6bc60195578d7035d
This commit is contained in:
@@ -31,6 +31,8 @@ import static com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTO
|
||||
import static com.android.launcher3.testing.shared.ResourceUtils.INVALID_RESOURCE_HANDLE;
|
||||
import static com.android.launcher3.testing.shared.ResourceUtils.pxFromDp;
|
||||
import static com.android.launcher3.testing.shared.ResourceUtils.roundPxValueFromFloat;
|
||||
import static com.android.wm.shell.Flags.enableBubbleBar;
|
||||
import static com.android.wm.shell.Flags.enableBubbleBarInPersistentTaskBar;
|
||||
import static com.android.wm.shell.Flags.enableTinyTaskbar;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
@@ -64,8 +66,10 @@ import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecT
|
||||
import com.android.launcher3.responsive.ResponsiveSpec.DimensionType;
|
||||
import com.android.launcher3.responsive.ResponsiveSpecsProvider;
|
||||
import com.android.launcher3.util.CellContentDimensions;
|
||||
import com.android.launcher3.util.DisplayController;
|
||||
import com.android.launcher3.util.DisplayController.Info;
|
||||
import com.android.launcher3.util.IconSizeSteps;
|
||||
import com.android.launcher3.util.NavigationMode;
|
||||
import com.android.launcher3.util.ResourceHelper;
|
||||
import com.android.launcher3.util.WindowBounds;
|
||||
import com.android.launcher3.util.window.WindowManagerProxy;
|
||||
@@ -219,6 +223,8 @@ public class DeviceProfile {
|
||||
public int hotseatBarBottomSpacePx;
|
||||
public int hotseatBarEndOffset;
|
||||
public int hotseatQsbSpace;
|
||||
public int inlineNavButtonsEndSpacingPx;
|
||||
public int navButtonsLayoutWidthPx;
|
||||
public int springLoadedHotseatBarTopMarginPx;
|
||||
// These 2 values are only used for isVerticalBar
|
||||
// Padding between edge of screen and hotseat
|
||||
@@ -233,7 +239,6 @@ public class DeviceProfile {
|
||||
private final int mMinHotseatIconSpacePx;
|
||||
private final int mMinHotseatQsbWidthPx;
|
||||
private final int mMaxHotseatIconSpacePx;
|
||||
public final int inlineNavButtonsEndSpacingPx;
|
||||
// Space required for the bubble bar between the hotseat and the edge of the screen. If there's
|
||||
// not enough space, the hotseat will adjust itself for the bubble bar.
|
||||
private final int mBubbleBarSpaceThresholdPx;
|
||||
@@ -692,17 +697,12 @@ public class DeviceProfile {
|
||||
if (areNavButtonsInline && !isPhone) {
|
||||
inlineNavButtonsEndSpacingPx =
|
||||
res.getDimensionPixelSize(inv.inlineNavButtonsEndSpacing);
|
||||
/*
|
||||
* 3 nav buttons +
|
||||
* Spacing between nav buttons +
|
||||
* Space at the end for contextual buttons
|
||||
*/
|
||||
hotseatBarEndOffset = 3 * res.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size)
|
||||
+ 2 * res.getDimensionPixelSize(R.dimen.taskbar_button_space_inbetween)
|
||||
+ inlineNavButtonsEndSpacingPx;
|
||||
} else {
|
||||
inlineNavButtonsEndSpacingPx = 0;
|
||||
hotseatBarEndOffset = 0;
|
||||
/* 3 nav buttons + Spacing between nav buttons */
|
||||
navButtonsLayoutWidthPx = 3 * res.getDimensionPixelSize(
|
||||
R.dimen.taskbar_nav_buttons_size)
|
||||
+ 2 * res.getDimensionPixelSize(R.dimen.taskbar_button_space_inbetween);
|
||||
/* nav buttons layout width + Space at the end for contextual buttons */
|
||||
hotseatBarEndOffset = navButtonsLayoutWidthPx + inlineNavButtonsEndSpacingPx;
|
||||
}
|
||||
|
||||
mBubbleBarSpaceThresholdPx =
|
||||
@@ -2326,6 +2326,25 @@ public class DeviceProfile {
|
||||
return c.createConfigurationContext(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether Taskbar and Hotseat should adjust horizontally on bubble bar location update.
|
||||
*/
|
||||
public boolean shouldAdjustHotseatOnBubblesLocationUpdate(Context context) {
|
||||
return enableBubbleBar()
|
||||
&& enableBubbleBarInPersistentTaskBar()
|
||||
&& DisplayController.getNavigationMode(context)
|
||||
== NavigationMode.THREE_BUTTONS;
|
||||
}
|
||||
|
||||
/** Returns hotseat translation X for the bubble bar position. */
|
||||
public int getHotseatTranslationXForBubbleBar(boolean isNavbarOnRight) {
|
||||
if (isNavbarOnRight) {
|
||||
return 0;
|
||||
} else {
|
||||
return navButtonsLayoutWidthPx;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback when a component changes the DeviceProfile associated with it, as a result of
|
||||
* configuration change
|
||||
|
||||
Reference in New Issue
Block a user