Merge "Add more extra space to hotseat for taller devices." into sc-dev

This commit is contained in:
Jonathan Miranda 2021-07-23 21:41:27 +00:00 committed by Android (Google) Code Review
commit 0c7153bbdf
1 changed files with 26 additions and 8 deletions

View File

@ -90,6 +90,7 @@ public class DeviceProfile {
private static final float MAX_HORIZONTAL_PADDING_PERCENT = 0.14f;
private static final float TALL_DEVICE_ASPECT_RATIO_THRESHOLD = 2.0f;
private static final float TALLER_DEVICE_ASPECT_RATIO_THRESHOLD = 2.15f;
// To evenly space the icons, increase the left/right margins for tablets in portrait mode.
private static final int PORTRAIT_TABLET_LEFT_RIGHT_PADDING_MULTIPLIER = 4;
@ -149,12 +150,13 @@ public class DeviceProfile {
public int folderChildDrawablePaddingPx;
// Hotseat
public int hotseatBarSizeExtraSpacePx;
public final int numShownHotseatIcons;
public int hotseatCellHeightPx;
private final int hotseatExtraVerticalSize;
// In portrait: size = height, in landscape: size = width
public int hotseatBarSizePx;
public final int hotseatBarTopPaddingPx;
public int hotseatBarTopPaddingPx;
public final int hotseatBarBottomPaddingPx;
// Start is the side next to the nav bar, end is the side next to the workspace
public final int hotseatBarSidePaddingStartPx;
@ -323,6 +325,7 @@ public class DeviceProfile {
isTwoPanels ? inv.numDatabaseHotseatIcons : inv.numShownHotseatIcons;
numShownAllAppsColumns =
isTwoPanels ? inv.numDatabaseAllAppsColumns : inv.numAllAppsColumns;
hotseatBarSizeExtraSpacePx = 0;
hotseatBarTopPaddingPx =
res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_top_padding);
hotseatBarBottomPaddingPx = (isTallDevice ? 0
@ -353,6 +356,7 @@ public class DeviceProfile {
// Calculate all of the remaining variables.
extraSpace = updateAvailableDimensions(res);
// Now that we have all of the variables calculated, we can tune certain sizes.
if (isScalableGrid && inv.devicePaddings != null) {
// Paddings were created assuming no scaling, so we first unscale the extra space.
@ -372,12 +376,25 @@ public class DeviceProfile {
qsbBottomMarginPx = Math.round(qsbBottomMarginOriginalPx * cellScaleToFit);
} else if (!isVerticalBarLayout() && isPhone && isTallDevice) {
// We increase the hotseat size when there is extra space.
// ie. For a display with a large aspect ratio, we can keep the icons on the workspace
// in portrait mode closer together by adding more height to the hotseat.
// Note: This calculation was created after noticing a pattern in the design spec.
int extraSpace = getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2
- workspacePageIndicatorHeight;
hotseatBarSizePx += extraSpace;
if (Float.compare(aspectRatio, TALLER_DEVICE_ASPECT_RATIO_THRESHOLD) >= 0) {
// For taller devices, we will take a third of the extra space from each row,
// and add it to the space above and below the hotseat.
int extraSpace = ((getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2)
* inv.numRows) / 3;
int halfExtraSpace = extraSpace / 2;
hotseatBarTopPaddingPx += halfExtraSpace;
hotseatBarSizeExtraSpacePx = halfExtraSpace;
} else {
// ie. For a display with a large aspect ratio, we can keep the icons on the
// workspace in portrait mode closer together by adding more height to the hotseat.
// Note: This calculation was created after noticing a pattern in the design spec.
hotseatBarSizeExtraSpacePx = getCellSize().y - iconSizePx
- iconDrawablePaddingPx * 2 - workspacePageIndicatorHeight;
}
updateHotseatIconSize(iconSizePx);
// Recalculate the available dimensions using the new hotseat size.
updateAvailableDimensions(res);
@ -402,7 +419,8 @@ public class DeviceProfile {
+ hotseatBarSidePaddingEndPx;
} else {
hotseatBarSizePx = hotseatIconSizePx + hotseatBarTopPaddingPx
+ hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize);
+ hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize)
+ hotseatBarSizeExtraSpacePx;
}
}