diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index 009e098fef..88e817111e 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -120,6 +120,7 @@ public class DeviceProfile { public int iconDrawablePaddingPx; public int iconDrawablePaddingOriginalPx; + public float cellScaleToFit; public int cellWidthPx; public int cellHeightPx; public int workspaceCellPaddingXPx; @@ -354,20 +355,20 @@ public class DeviceProfile { // 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. - int unscaledExtraSpace = (int) (extraSpace / iconScale); + int unscaledExtraSpace = (int) (extraSpace / cellScaleToFit); DevicePadding padding = inv.devicePaddings.getDevicePadding(unscaledExtraSpace); int paddingWorkspaceTop = padding.getWorkspaceTopPadding(unscaledExtraSpace); int paddingWorkspaceBottom = padding.getWorkspaceBottomPadding(unscaledExtraSpace); int paddingHotseatBottom = padding.getHotseatBottomPadding(unscaledExtraSpace); - workspaceTopPadding = Math.round(paddingWorkspaceTop * iconScale); - workspaceBottomPadding = Math.round(paddingWorkspaceBottom * iconScale); - extraHotseatBottomPadding = Math.round(paddingHotseatBottom * iconScale); + workspaceTopPadding = Math.round(paddingWorkspaceTop * cellScaleToFit); + workspaceBottomPadding = Math.round(paddingWorkspaceBottom * cellScaleToFit); + extraHotseatBottomPadding = Math.round(paddingHotseatBottom * cellScaleToFit); hotseatBarSizePx += extraHotseatBottomPadding; - qsbBottomMarginPx = Math.round(qsbBottomMarginOriginalPx * iconScale); + 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 @@ -535,15 +536,18 @@ public class DeviceProfile { * hotseat sizes, workspaceSpringLoadedShrinkFactor, folderIconSizePx, and folderIconOffsetYPx. */ public void updateIconSize(float scale, Resources res) { - iconScale = scale; + // Icon scale should never exceed 1, otherwise pixellation may occur. + iconScale = Math.min(1f, scale); + cellScaleToFit = scale; + // Workspace final boolean isVerticalLayout = isVerticalBarLayout(); float invIconSizeDp = isLandscape ? inv.landscapeIconSize : inv.iconSize; - iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale)); + iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, iconScale)); float invIconTextSizeSp = isLandscape ? inv.landscapeIconTextSize : inv.iconTextSize; - iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * scale); - iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * scale); + iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * iconScale); + iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * iconScale); setCellLayoutBorderSpacing((int) (cellLayoutBorderSpacingOriginalPx * scale)); @@ -887,6 +891,9 @@ public class DeviceProfile { writer.println(prefix + "\tinv.minCellWidth:" + inv.minCellWidth + "dp"); writer.println(prefix + "\tinv.minCellHeight:" + inv.minCellHeight + "dp"); + writer.println(prefix + "\tinv.numColumns:" + inv.numColumns); + writer.println(prefix + "\tinv.numRows:" + inv.numRows); + writer.println(prefix + pxToDpStr("cellWidthPx", cellWidthPx)); writer.println(prefix + pxToDpStr("cellHeightPx", cellHeightPx)); @@ -940,7 +947,8 @@ public class DeviceProfile { writer.println(prefix + pxToDpStr("workspacePadding.right", workspacePadding.right)); writer.println(prefix + pxToDpStr("workspacePadding.bottom", workspacePadding.bottom)); - writer.println(prefix + pxToDpStr("scaleToFit", iconScale)); + writer.println(prefix + pxToDpStr("iconScale", iconScale)); + writer.println(prefix + pxToDpStr("cellScaleToFit ", cellScaleToFit)); writer.println(prefix + pxToDpStr("extraSpace", extraSpace)); if (inv.devicePaddings != null) {