diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 319c87d85f..ef6291ef7f 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -184,11 +184,9 @@ - + - + @@ -217,15 +215,20 @@ if not specified --> - + + + + + + - + @@ -233,7 +236,7 @@ - + @@ -242,12 +245,6 @@ - - - - - - diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index 4e06ff9440..0b60b32275 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -80,6 +80,7 @@ public class DeviceProfile { public final float aspectRatio; public final boolean isScalableGrid; + private final int mTypeIndex; /** * The maximum amount of left/right workspace padding as a percentage of the screen width. @@ -169,7 +170,7 @@ public class DeviceProfile { public int qsbBottomMarginPx; // All apps - public int allAppsCellSpacingPx; + public Point allAppsCellSpacePx; public int allAppsOpenVerticalTranslate; public int allAppsCellHeightPx; public int allAppsCellWidthPx; @@ -262,6 +263,20 @@ public class DeviceProfile { mMetrics = context.getResources().getDisplayMetrics(); final Resources res = context.getResources(); + if (isTwoPanels) { + if (isLandscape) { + mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE; + } else { + mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT; + } + } else { + if (isLandscape) { + mTypeIndex = InvariantDeviceProfile.INDEX_LANDSCAPE; + } else { + mTypeIndex = InvariantDeviceProfile.INDEX_DEFAULT; + } + } + hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height); isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS && FeatureFlags.ENABLE_TASKBAR.get(); @@ -283,7 +298,9 @@ public class DeviceProfile { folderContentPaddingTop = res.getDimensionPixelSize(R.dimen.folder_content_padding_top); cellLayoutBorderSpacePx = getCellLayoutBorderSpace(inv); - allAppsCellSpacingPx = pxFromDp(inv.allAppsCellSpacing, mMetrics, 1f); + allAppsCellSpacePx = new Point( + pxFromDp(inv.borderSpaces[InvariantDeviceProfile.INDEX_ALL_APPS].x, mMetrics, 1f), + pxFromDp(inv.borderSpaces[InvariantDeviceProfile.INDEX_ALL_APPS].y, mMetrics, 1f)); cellLayoutBorderSpaceOriginalPx = new Point(cellLayoutBorderSpacePx); folderCellLayoutBorderSpaceOriginalPx = pxFromDp(inv.folderBorderSpace, mMetrics, 1f); folderCellLayoutBorderSpacePx = new Point(folderCellLayoutBorderSpaceOriginalPx, @@ -339,7 +356,8 @@ public class DeviceProfile { hotseatBarSidePaddingStartPx = isVerticalBarLayout() ? workspacePageIndicatorHeight : 0; hotseatExtraVerticalSize = res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size); - updateHotseatIconSize(pxFromDp(inv.iconSize, mMetrics, 1f)); + updateHotseatIconSize( + pxFromDp(inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics, 1f)); qsbBottomMarginOriginalPx = isScalableGrid ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin) @@ -451,22 +469,9 @@ public class DeviceProfile { return 0; } - int horizontalMarginPx; - - if (isScalableGrid) { - if (isTwoPanels) { - if (isLandscape) { - horizontalMarginPx = pxFromDp(idp.twoPanelLandscapeHorizontalMargin, mMetrics); - } else { - horizontalMarginPx = pxFromDp(idp.twoPanelPortraitHorizontalMargin, mMetrics); - } - } else { - horizontalMarginPx = pxFromDp(idp.horizontalMargin, mMetrics); - } - } else { - horizontalMarginPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_left_right_margin); - } - return horizontalMarginPx; + return isScalableGrid + ? pxFromDp(idp.horizontalMargin[mTypeIndex], mMetrics) + : res.getDimensionPixelSize(R.dimen.dynamic_grid_left_right_margin); } private void updateHotseatIconSize(int hotseatIconSizePx) { @@ -487,21 +492,8 @@ public class DeviceProfile { return new Point(0, 0); } - int horizontalSpacePx; - int verticalSpacePx; - - if (isTwoPanels) { - if (isLandscape) { - horizontalSpacePx = pxFromDp(idp.twoPanelLandscapeBorderSpace.x, mMetrics); - verticalSpacePx = pxFromDp(idp.twoPanelLandscapeBorderSpace.y, mMetrics); - } else { - horizontalSpacePx = pxFromDp(idp.twoPanelPortraitBorderSpace.x, mMetrics); - verticalSpacePx = pxFromDp(idp.twoPanelPortraitBorderSpace.y, mMetrics); - } - } else { - horizontalSpacePx = pxFromDp(idp.borderSpace.x, mMetrics); - verticalSpacePx = pxFromDp(idp.borderSpace.y, mMetrics); - } + int horizontalSpacePx = pxFromDp(idp.borderSpaces[mTypeIndex].x, mMetrics); + int verticalSpacePx = pxFromDp(idp.borderSpaces[mTypeIndex].y, mMetrics); return new Point(horizontalSpacePx, verticalSpacePx); } @@ -598,7 +590,7 @@ public class DeviceProfile { private void updateAllAppsWidth() { if (isTwoPanels) { int usedWidth = (allAppsCellWidthPx * numShownAllAppsColumns) - + (allAppsCellSpacingPx * (numShownAllAppsColumns + 1)); + + (allAppsCellSpacePx.x * (numShownAllAppsColumns + 1)); allAppsLeftRightPadding = Math.max(1, (availableWidthPx - usedWidth) / 2); } else { allAppsLeftRightPadding = @@ -661,26 +653,8 @@ public class DeviceProfile { // Workspace final boolean isVerticalLayout = isVerticalBarLayout(); - float invIconSizeDp; - float invIconTextSizeSp; - - if (isTwoPanels) { - if (isLandscape) { - invIconSizeDp = inv.twoPanelLandscapeIconSize; - invIconTextSizeSp = inv.twoPanelLandscapeIconTextSize; - } else { - invIconSizeDp = inv.twoPanelPortraitIconSize; - invIconTextSizeSp = inv.twoPanelPortraitIconTextSize; - } - } else { - if (isLandscape) { - invIconSizeDp = inv.landscapeIconSize; - invIconTextSizeSp = inv.landscapeIconTextSize; - } else { - invIconSizeDp = inv.iconSize; - invIconTextSizeSp = inv.iconTextSize; - } - } + float invIconSizeDp = inv.iconSize[mTypeIndex]; + float invIconTextSizeSp = inv.iconTextSize[mTypeIndex]; iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, iconScale)); iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * iconScale); @@ -689,9 +663,8 @@ public class DeviceProfile { cellLayoutBorderSpacePx = getCellLayoutBorderSpaceScaled(inv, scale); if (isScalableGrid) { - PointF minCellHeightAndWidth = getMinCellHeightAndWidth(); - cellWidthPx = pxFromDp(minCellHeightAndWidth.x, mMetrics, scale); - cellHeightPx = pxFromDp(minCellHeightAndWidth.y, mMetrics, scale); + cellWidthPx = pxFromDp(inv.minCellSize[mTypeIndex].x, mMetrics, scale); + cellHeightPx = pxFromDp(inv.minCellSize[mTypeIndex].y, mMetrics, scale); int cellContentHeight = iconSizePx + iconDrawablePaddingPx + Utilities.calculateTextHeight(iconTextSizePx); cellYPaddingPx = Math.max(0, cellHeightPx - cellContentHeight) / 2; @@ -715,8 +688,10 @@ public class DeviceProfile { // All apps if (numShownAllAppsColumns != inv.numColumns) { - allAppsIconSizePx = pxFromDp(inv.allAppsIconSize, mMetrics); - allAppsIconTextSizePx = pxFromSp(inv.allAppsIconTextSize, mMetrics); + allAppsIconSizePx = + pxFromDp(inv.iconSize[InvariantDeviceProfile.INDEX_ALL_APPS], mMetrics); + allAppsIconTextSizePx = + pxFromSp(inv.iconTextSize[InvariantDeviceProfile.INDEX_ALL_APPS], mMetrics); allAppsIconDrawablePaddingPx = iconDrawablePaddingOriginalPx; autoResizeAllAppsCells(); } else { @@ -752,28 +727,6 @@ public class DeviceProfile { folderIconOffsetYPx = (iconSizePx - folderIconSizePx) / 2; } - /** - * Returns the minimum cell height and width as a pair. - */ - private PointF getMinCellHeightAndWidth() { - PointF result = new PointF(); - - if (isTwoPanels) { - if (isLandscape) { - result.x = inv.twoPanelLandscapeMinCellWidthDps; - result.y = inv.twoPanelLandscapeMinCellHeightDps; - } else { - result.x = inv.twoPanelPortraitMinCellWidthDps; - result.y = inv.twoPanelPortraitMinCellHeightDps; - } - } else { - result.x = inv.minCellWidth; - result.y = inv.minCellHeight; - } - - return result; - } - private void updateAvailableFolderCellDimensions(Resources res) { updateFolderCellSize(1f, res); @@ -804,9 +757,12 @@ public class DeviceProfile { } private void updateFolderCellSize(float scale, Resources res) { - float invIconSizeDp = isVerticalBarLayout() ? inv.landscapeIconSize : inv.iconSize; + float invIconSizeDp = isVerticalBarLayout() + ? inv.iconSize[InvariantDeviceProfile.INDEX_LANDSCAPE] + : inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT]; folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale)); - folderChildTextSizePx = pxFromSp(inv.iconTextSize, mMetrics, scale); + folderChildTextSizePx = + pxFromSp(inv.iconTextSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics, scale); folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale); int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx); @@ -901,7 +857,7 @@ public class DeviceProfile { + workspaceBottomPadding - mWorkspacePageIndicatorOverlapWorkspace; padding.set(desiredWorkspaceHorizontalMarginPx, - (isScalableGrid ? workspaceTopPadding : edgeMarginPx), + workspaceTopPadding + (isScalableGrid ? 0 : edgeMarginPx), desiredWorkspaceHorizontalMarginPx, paddingBottom); } @@ -1094,19 +1050,10 @@ public class DeviceProfile { writer.println(prefix + "\tisScalableGrid:" + isScalableGrid); - writer.println(prefix + "\tinv.minCellWidth:" + inv.minCellWidth + "dp"); - writer.println(prefix + "\tinv.minCellHeight:" + inv.minCellHeight + "dp"); - writer.println(prefix + "\tinv.twoPanelPortraitMinCellHeightDps:" - + inv.twoPanelPortraitMinCellHeightDps + "dp"); - writer.println(prefix + "\tinv.twoPanelPortraitMinCellWidthDps:" - + inv.twoPanelPortraitMinCellWidthDps + "dp"); - writer.println(prefix + "\tinv.twoPanelLandscapeMinCellHeightDps:" - + inv.twoPanelLandscapeMinCellHeightDps + "dp"); - writer.println(prefix + "\tinv.twoPanelLandscapeMinCellWidthDps:" - + inv.twoPanelLandscapeMinCellWidthDps + "dp"); + writer.println(prefix + "\tinv.numColumns: " + inv.numColumns); + writer.println(prefix + "\tinv.numRows: " + inv.numRows); - writer.println(prefix + "\tinv.numColumns:" + inv.numColumns); - writer.println(prefix + "\tinv.numRows:" + inv.numRows); + writer.println(prefix + "\tminCellSize: " + inv.minCellSize[mTypeIndex] + "dp"); writer.println(prefix + pxToDpStr("cellWidthPx", cellWidthPx)); writer.println(prefix + pxToDpStr("cellHeightPx", cellHeightPx)); @@ -1114,7 +1061,11 @@ public class DeviceProfile { writer.println(prefix + pxToDpStr("getCellSize().x", getCellSize().x)); writer.println(prefix + pxToDpStr("getCellSize().y", getCellSize().y)); - writer.println(prefix + "\tinv.iconSize:" + inv.iconSize + "dp"); + writer.println(prefix + pxToDpStr("cellLayoutBorderSpacePx Horizontal", + cellLayoutBorderSpacePx.x)); + writer.println(prefix + pxToDpStr("cellLayoutBorderSpacePx Vertical", + cellLayoutBorderSpacePx.y)); + writer.println(prefix + pxToDpStr("iconSizePx", iconSizePx)); writer.println(prefix + pxToDpStr("iconTextSizePx", iconTextSizePx)); writer.println(prefix + pxToDpStr("iconDrawablePaddingPx", iconDrawablePaddingPx)); @@ -1132,14 +1083,6 @@ public class DeviceProfile { writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpacePx Vertical", folderCellLayoutBorderSpacePx.y)); - writer.println(prefix + pxToDpStr("cellLayoutBorderSpacePx Horizontal", - cellLayoutBorderSpacePx.x)); - writer.println(prefix + pxToDpStr("cellLayoutBorderSpacePx Vertical", - cellLayoutBorderSpacePx.y)); - - writer.println(prefix + pxToDpStr("desiredWorkspaceHorizontalMarginPx", - desiredWorkspaceHorizontalMarginPx)); - writer.println(prefix + pxToDpStr("allAppsIconSizePx", allAppsIconSizePx)); writer.println(prefix + pxToDpStr("allAppsIconTextSizePx", allAppsIconTextSizePx)); writer.println(prefix + pxToDpStr("allAppsIconDrawablePaddingPx", @@ -1161,6 +1104,8 @@ public class DeviceProfile { writer.println(prefix + "\tisTaskbarPresentInApps:" + isTaskbarPresentInApps); writer.println(prefix + pxToDpStr("taskbarSize", taskbarSize)); + writer.println(prefix + pxToDpStr("desiredWorkspaceHorizontalMarginPx", + desiredWorkspaceHorizontalMarginPx)); writer.println(prefix + pxToDpStr("workspacePadding.left", workspacePadding.left)); writer.println(prefix + pxToDpStr("workspacePadding.top", workspacePadding.top)); writer.println(prefix + pxToDpStr("workspacePadding.right", workspacePadding.right)); diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java index cfc14b6dd6..ca07249b06 100644 --- a/src/com/android/launcher3/InvariantDeviceProfile.java +++ b/src/com/android/launcher3/InvariantDeviceProfile.java @@ -86,6 +86,15 @@ public class InvariantDeviceProfile { // used to offset float not being able to express extremely small weights in extreme cases. private static final float WEIGHT_EFFICIENT = 100000f; + // Used for arrays to specify different sizes (e.g. border spaces, width/height) in different + // constraints + static final int COUNT_SIZES = 5; + static final int INDEX_DEFAULT = 0; + static final int INDEX_LANDSCAPE = 1; + static final int INDEX_TWO_PANEL_PORTRAIT = 2; + static final int INDEX_TWO_PANEL_LANDSCAPE = 3; + static final int INDEX_ALL_APPS = 4; + /** * Number of icons per row and column in the workspace. */ @@ -97,36 +106,18 @@ public class InvariantDeviceProfile { */ public int numFolderRows; public int numFolderColumns; - public float iconSize; - public float landscapeIconSize; - public float twoPanelPortraitIconSize; - public float twoPanelLandscapeIconSize; - public float landscapeIconTextSize; - public float twoPanelPortraitIconTextSize; - public float twoPanelLandscapeIconTextSize; + public float[] iconSize; + public float[] iconTextSize; public int iconBitmapSize; public int fillResIconDpi; - public float iconTextSize; - public float allAppsIconSize; - public float allAppsIconTextSize; - public float allAppsCellSpacing; public boolean isSplitDisplay; - public float minCellHeight; - public float minCellWidth; - public float twoPanelPortraitMinCellHeightDps; - public float twoPanelPortraitMinCellWidthDps; - public float twoPanelLandscapeMinCellHeightDps; - public float twoPanelLandscapeMinCellWidthDps; + public PointF[] minCellSize; - public PointF borderSpace; - public PointF twoPanelPortraitBorderSpace; - public PointF twoPanelLandscapeBorderSpace; + public PointF[] borderSpaces; public float folderBorderSpace; - public float horizontalMargin; - public float twoPanelLandscapeHorizontalMargin; - public float twoPanelPortraitHorizontalMargin; + public float[] horizontalMargin; private SparseArray mExtraAttrs; @@ -221,17 +212,17 @@ public class InvariantDeviceProfile { DisplayOption result = new DisplayOption(defaultDisplayOption.grid) .add(myDisplayOption); - result.iconSizes[DisplayOption.INDEX_DEFAULT] = - defaultDisplayOption.iconSizes[DisplayOption.INDEX_DEFAULT]; - for (int i = 1; i < DisplayOption.COUNT_SIZES; i++) { + result.iconSizes[INDEX_DEFAULT] = + defaultDisplayOption.iconSizes[INDEX_DEFAULT]; + for (int i = 1; i < COUNT_SIZES; i++) { result.iconSizes[i] = Math.min( defaultDisplayOption.iconSizes[i], myDisplayOption.iconSizes[i]); } - result.minCellHeight = defaultDisplayOption.minCellHeight; - result.minCellWidth = defaultDisplayOption.minCellWidth; - result.borderSpaces[DisplayOption.INDEX_ALL_APPS] = - defaultDisplayOption.borderSpaces[DisplayOption.INDEX_ALL_APPS]; + System.arraycopy(defaultDisplayOption.minCellSize, 0, result.minCellSize, 0, + COUNT_SIZES); + System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0, + COUNT_SIZES); initGrid(context, myInfo, result, false); } @@ -274,39 +265,18 @@ public class InvariantDeviceProfile { mExtraAttrs = closestProfile.extraAttrs; - iconSize = displayOption.iconSizes[DisplayOption.INDEX_DEFAULT]; - landscapeIconSize = displayOption.iconSizes[DisplayOption.INDEX_LANDSCAPE]; - twoPanelPortraitIconSize = displayOption.iconSizes[DisplayOption.INDEX_TWO_PANEL_PORTRAIT]; - twoPanelLandscapeIconSize = - displayOption.iconSizes[DisplayOption.INDEX_TWO_PANEL_LANDSCAPE]; - iconBitmapSize = ResourceUtils.pxFromDp(iconSize, metrics); + iconSize = displayOption.iconSizes; + iconBitmapSize = ResourceUtils.pxFromDp(iconSize[INDEX_DEFAULT], metrics); fillResIconDpi = getLauncherIconDensity(iconBitmapSize); - iconTextSize = displayOption.textSizes[DisplayOption.INDEX_DEFAULT]; - landscapeIconTextSize = displayOption.textSizes[DisplayOption.INDEX_LANDSCAPE]; - twoPanelPortraitIconTextSize = - displayOption.textSizes[DisplayOption.INDEX_TWO_PANEL_PORTRAIT]; - twoPanelLandscapeIconTextSize = - displayOption.textSizes[DisplayOption.INDEX_TWO_PANEL_LANDSCAPE]; + iconTextSize = displayOption.textSizes; - minCellHeight = displayOption.minCellHeight; - minCellWidth = displayOption.minCellWidth; - twoPanelPortraitMinCellHeightDps = displayOption.twoPanelPortraitMinCellHeightDps; - twoPanelPortraitMinCellWidthDps = displayOption.twoPanelPortraitMinCellWidthDps; - twoPanelLandscapeMinCellHeightDps = displayOption.twoPanelLandscapeMinCellHeightDps; - twoPanelLandscapeMinCellWidthDps = displayOption.twoPanelLandscapeMinCellWidthDps; + minCellSize = displayOption.minCellSize; - borderSpace = displayOption.borderSpaces[DisplayOption.INDEX_DEFAULT]; - twoPanelPortraitBorderSpace = - displayOption.borderSpaces[DisplayOption.INDEX_TWO_PANEL_PORTRAIT]; - twoPanelLandscapeBorderSpace = - displayOption.borderSpaces[DisplayOption.INDEX_TWO_PANEL_LANDSCAPE]; - allAppsCellSpacing = displayOption.borderSpaces[DisplayOption.INDEX_ALL_APPS].x; + borderSpaces = displayOption.borderSpaces; folderBorderSpace = displayOption.folderBorderSpace; horizontalMargin = displayOption.horizontalMargin; - twoPanelLandscapeHorizontalMargin = displayOption.twoPanelLandscapeHorizontalMargin; - twoPanelPortraitHorizontalMargin = displayOption.twoPanelPortraitHorizontalMargin; numShownHotseatIcons = closestProfile.numHotseatIcons; numDatabaseHotseatIcons = isSplitDisplay @@ -316,12 +286,9 @@ public class InvariantDeviceProfile { numDatabaseAllAppsColumns = isSplitDisplay ? closestProfile.numDatabaseAllAppsColumns : closestProfile.numAllAppsColumns; - if (Utilities.isGridOptionsEnabled(context)) { - allAppsIconSize = displayOption.iconSizes[DisplayOption.INDEX_ALL_APPS]; - allAppsIconTextSize = displayOption.textSizes[DisplayOption.INDEX_ALL_APPS]; - } else { - allAppsIconSize = iconSize; - allAppsIconTextSize = iconTextSize; + if (!Utilities.isGridOptionsEnabled(context)) { + iconSize[INDEX_ALL_APPS] = iconSize[INDEX_DEFAULT]; + iconTextSize[INDEX_ALL_APPS] = iconTextSize[INDEX_DEFAULT]; } if (devicePaddingId != 0) { @@ -566,11 +533,11 @@ public class InvariantDeviceProfile { // Since the bitmaps are persisted, ensure that the default bitmap size is same as // predefined size to avoid cache invalidation - out.iconSizes[DisplayOption.INDEX_DEFAULT] = - closestPoint.iconSizes[DisplayOption.INDEX_DEFAULT]; - for (int i = DisplayOption.INDEX_DEFAULT + 1; i < DisplayOption.COUNT_SIZES; i++) { + out.iconSizes[INDEX_DEFAULT] = + closestPoint.iconSizes[INDEX_DEFAULT]; + for (int i = INDEX_DEFAULT + 1; i < COUNT_SIZES; i++) { out.iconSizes[i] = Math.min(out.iconSizes[i], - out.iconSizes[DisplayOption.INDEX_DEFAULT]); + out.iconSizes[INDEX_DEFAULT]); } return out; @@ -724,32 +691,17 @@ public class InvariantDeviceProfile { @VisibleForTesting static final class DisplayOption { - static final int COUNT_SIZES = 5; - static final int INDEX_DEFAULT = 0; - static final int INDEX_LANDSCAPE = 1; - static final int INDEX_TWO_PANEL_PORTRAIT = 2; - static final int INDEX_TWO_PANEL_LANDSCAPE = 3; - static final int INDEX_ALL_APPS = 4; - public final GridOption grid; private final float minWidthDps; private final float minHeightDps; private final boolean canBeDefault; - private float minCellHeight; - private float minCellWidth; - private float twoPanelPortraitMinCellHeightDps; - private float twoPanelPortraitMinCellWidthDps; - private float twoPanelLandscapeMinCellHeightDps; - private float twoPanelLandscapeMinCellWidthDps; + private final PointF[] minCellSize = new PointF[COUNT_SIZES]; private float folderBorderSpace; private final PointF[] borderSpaces = new PointF[COUNT_SIZES]; - - private float horizontalMargin; - private float twoPanelLandscapeHorizontalMargin; - private float twoPanelPortraitHorizontalMargin; + private final float[] horizontalMargin = new float[COUNT_SIZES]; private final float[] iconSizes = new float[COUNT_SIZES]; private final float[] textSizes = new float[COUNT_SIZES]; @@ -766,27 +718,32 @@ public class InvariantDeviceProfile { canBeDefault = a.getInt(R.styleable.ProfileDisplayOption_canBeDefault, 0) == defaultFlagValue; - minCellHeight = a.getFloat(R.styleable.ProfileDisplayOption_minCellHeightDps, 0); - minCellWidth = a.getFloat(R.styleable.ProfileDisplayOption_minCellWidthDps, 0); - twoPanelPortraitMinCellHeightDps = a.getFloat( - R.styleable.ProfileDisplayOption_twoPanelPortraitMinCellHeightDps, - minCellHeight); - twoPanelPortraitMinCellWidthDps = a.getFloat( - R.styleable.ProfileDisplayOption_twoPanelPortraitMinCellWidthDps, minCellWidth); - twoPanelLandscapeMinCellHeightDps = a.getFloat( - R.styleable.ProfileDisplayOption_twoPanelLandscapeMinCellHeightDps, - twoPanelPortraitMinCellHeightDps); - twoPanelLandscapeMinCellWidthDps = a.getFloat( - R.styleable.ProfileDisplayOption_twoPanelLandscapeMinCellWidthDps, - twoPanelPortraitMinCellWidthDps); + float x; + float y; + + x = a.getFloat(R.styleable.ProfileDisplayOption_minCellWidthDps, 0); + y = a.getFloat(R.styleable.ProfileDisplayOption_minCellHeightDps, 0); + minCellSize[INDEX_DEFAULT] = new PointF(x, y); + minCellSize[INDEX_LANDSCAPE] = new PointF(x, y); + minCellSize[INDEX_ALL_APPS] = new PointF(x, y); + + x = a.getFloat(R.styleable.ProfileDisplayOption_twoPanelPortraitMinCellWidthDps, + minCellSize[INDEX_DEFAULT].x); + y = a.getFloat(R.styleable.ProfileDisplayOption_twoPanelPortraitMinCellHeightDps, + minCellSize[INDEX_DEFAULT].y); + minCellSize[INDEX_TWO_PANEL_PORTRAIT] = new PointF(x, y); + + x = a.getFloat(R.styleable.ProfileDisplayOption_twoPanelLandscapeMinCellWidthDps, + minCellSize[INDEX_DEFAULT].x); + y = a.getFloat(R.styleable.ProfileDisplayOption_twoPanelLandscapeMinCellHeightDps, + minCellSize[INDEX_DEFAULT].y); + minCellSize[INDEX_TWO_PANEL_LANDSCAPE] = new PointF(x, y); float borderSpace = a.getFloat(R.styleable.ProfileDisplayOption_borderSpaceDps, 0); float twoPanelPortraitBorderSpaceDps = a.getFloat( R.styleable.ProfileDisplayOption_twoPanelPortraitBorderSpaceDps, borderSpace); float twoPanelLandscapeBorderSpaceDps = a.getFloat( R.styleable.ProfileDisplayOption_twoPanelLandscapeBorderSpaceDps, borderSpace); - float x; - float y; x = a.getFloat(R.styleable.ProfileDisplayOption_borderSpaceHorizontalDps, borderSpace); y = a.getFloat(R.styleable.ProfileDisplayOption_borderSpaceVerticalDps, borderSpace); @@ -827,7 +784,7 @@ public class InvariantDeviceProfile { iconSizes[INDEX_DEFAULT]); iconSizes[INDEX_TWO_PANEL_LANDSCAPE] = a.getFloat(R.styleable.ProfileDisplayOption_twoPanelLandscapeIconSize, - iconSizes[INDEX_LANDSCAPE]); + iconSizes[INDEX_DEFAULT]); textSizes[INDEX_DEFAULT] = a.getFloat(R.styleable.ProfileDisplayOption_iconTextSize, 0); @@ -842,15 +799,18 @@ public class InvariantDeviceProfile { textSizes[INDEX_DEFAULT]); textSizes[INDEX_TWO_PANEL_LANDSCAPE] = a.getFloat(R.styleable.ProfileDisplayOption_twoPanelLandscapeIconTextSize, - textSizes[INDEX_LANDSCAPE]); + textSizes[INDEX_DEFAULT]); - horizontalMargin = a.getFloat(R.styleable.ProfileDisplayOption_horizontalMargin, 0); - twoPanelLandscapeHorizontalMargin = a.getFloat( + horizontalMargin[INDEX_DEFAULT] = a.getFloat( + R.styleable.ProfileDisplayOption_horizontalMargin, 0); + horizontalMargin[INDEX_LANDSCAPE] = horizontalMargin[INDEX_DEFAULT]; + horizontalMargin[INDEX_ALL_APPS] = horizontalMargin[INDEX_DEFAULT]; + horizontalMargin[INDEX_TWO_PANEL_LANDSCAPE] = a.getFloat( R.styleable.ProfileDisplayOption_twoPanelLandscapeHorizontalMargin, - horizontalMargin); - twoPanelPortraitHorizontalMargin = a.getFloat( + horizontalMargin[INDEX_DEFAULT]); + horizontalMargin[INDEX_TWO_PANEL_PORTRAIT] = a.getFloat( R.styleable.ProfileDisplayOption_twoPanelPortraitHorizontalMargin, - horizontalMargin); + horizontalMargin[INDEX_DEFAULT]); a.recycle(); } @@ -864,12 +824,11 @@ public class InvariantDeviceProfile { minWidthDps = 0; minHeightDps = 0; canBeDefault = false; - minCellHeight = 0; - minCellWidth = 0; for (int i = 0; i < COUNT_SIZES; i++) { iconSizes[i] = 0; textSizes[i] = 0; borderSpaces[i] = new PointF(); + minCellSize[i] = new PointF(); } } @@ -877,21 +836,15 @@ public class InvariantDeviceProfile { for (int i = 0; i < COUNT_SIZES; i++) { iconSizes[i] *= w; textSizes[i] *= w; - borderSpaces[i].x *= w; - borderSpaces[i].y *= w; + borderSpaces[i].x *= w; + borderSpaces[i].y *= w; + minCellSize[i].x *= w; + minCellSize[i].y *= w; + horizontalMargin[i] *= w; } - minCellHeight *= w; - minCellWidth *= w; - twoPanelPortraitMinCellHeightDps *= w; - twoPanelPortraitMinCellWidthDps *= w; - twoPanelLandscapeMinCellHeightDps *= w; - twoPanelLandscapeMinCellWidthDps *= w; folderBorderSpace *= w; - horizontalMargin *= w; - twoPanelLandscapeHorizontalMargin *= w; - twoPanelPortraitHorizontalMargin *= w; return this; } @@ -899,21 +852,15 @@ public class InvariantDeviceProfile { for (int i = 0; i < COUNT_SIZES; i++) { iconSizes[i] += p.iconSizes[i]; textSizes[i] += p.textSizes[i]; - borderSpaces[i].x += p.borderSpaces[i].x; - borderSpaces[i].y += p.borderSpaces[i].y; + borderSpaces[i].x += p.borderSpaces[i].x; + borderSpaces[i].y += p.borderSpaces[i].y; + minCellSize[i].x += p.minCellSize[i].x; + minCellSize[i].y += p.minCellSize[i].y; + horizontalMargin[i] += p.horizontalMargin[i]; } - minCellHeight += p.minCellHeight; - minCellWidth += p.minCellWidth; - twoPanelPortraitMinCellHeightDps += p.twoPanelPortraitMinCellHeightDps; - twoPanelPortraitMinCellWidthDps += p.twoPanelPortraitMinCellWidthDps; - twoPanelLandscapeMinCellHeightDps += p.twoPanelLandscapeMinCellHeightDps; - twoPanelLandscapeMinCellWidthDps += p.twoPanelLandscapeMinCellWidthDps; folderBorderSpace += p.folderBorderSpace; - horizontalMargin += p.horizontalMargin; - twoPanelLandscapeHorizontalMargin += p.twoPanelLandscapeHorizontalMargin; - twoPanelPortraitHorizontalMargin += p.twoPanelPortraitHorizontalMargin; return this; } } diff --git a/src/com/android/launcher3/Partner.java b/src/com/android/launcher3/Partner.java index 0bdb37c076..2e27f32226 100644 --- a/src/com/android/launcher3/Partner.java +++ b/src/com/android/launcher3/Partner.java @@ -142,7 +142,7 @@ public class Partner { } if (iconSize > 0) { - inv.iconSize = iconSize; + inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT] = iconSize; } } }