Loading src/com/android/launcher3/DeviceProfile.java +26 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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. Loading @@ -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. 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. int extraSpace = getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2 - workspacePageIndicatorHeight; hotseatBarSizePx += extraSpace; hotseatBarSizeExtraSpacePx = getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2 - workspacePageIndicatorHeight; } updateHotseatIconSize(iconSizePx); // Recalculate the available dimensions using the new hotseat size. updateAvailableDimensions(res); Loading @@ -402,7 +419,8 @@ public class DeviceProfile { + hotseatBarSidePaddingEndPx; } else { hotseatBarSizePx = hotseatIconSizePx + hotseatBarTopPaddingPx + hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize); + hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize) + hotseatBarSizeExtraSpacePx; } } Loading Loading
src/com/android/launcher3/DeviceProfile.java +26 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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. Loading @@ -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. 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. int extraSpace = getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2 - workspacePageIndicatorHeight; hotseatBarSizePx += extraSpace; hotseatBarSizeExtraSpacePx = getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2 - workspacePageIndicatorHeight; } updateHotseatIconSize(iconSizePx); // Recalculate the available dimensions using the new hotseat size. updateAvailableDimensions(res); Loading @@ -402,7 +419,8 @@ public class DeviceProfile { + hotseatBarSidePaddingEndPx; } else { hotseatBarSizePx = hotseatIconSizePx + hotseatBarTopPaddingPx + hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize); + hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize) + hotseatBarSizeExtraSpacePx; } } Loading