launcher: refactoring variables into arrays
There are a lot of variables that can be merged together into arrays
following some optimizations done in other places.
Bug: 191879424
Test: checking cell size and extra space in dumpsys
Change-Id: I1d73fbb5da2df2345ced7f46df5bae5d75d9d6b1
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 319c87d..ef6291e 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -184,11 +184,9 @@
<attr name="twoPanelPortraitMinCellHeightDps" format="float" />
<!-- twoPanelPortraitMinCellHeightDps defaults to minCellWidthDps, if not specified -->
<attr name="twoPanelPortraitMinCellWidthDps" format="float" />
- <!-- twoPanelLandscapeMinCellHeightDps defaults to twoPanelPortraitMinCellHeightDps,
- if not specified -->
+ <!-- twoPanelLandscapeMinCellHeightDps defaults to minCellHeightDps, if not specified -->
<attr name="twoPanelLandscapeMinCellHeightDps" format="float" />
- <!-- twoPanelLandscapeMinCellWidthDps defaults to twoPanelPortraitMinCellWidthDps,
- if not specified -->
+ <!-- twoPanelLandscapeMinCellWidthDps defaults to minCellWidthDps, if not specified -->
<attr name="twoPanelLandscapeMinCellWidthDps" format="float" />
<!-- These border spaces are only used if GridDisplayOption#isScalable is true -->
@@ -217,15 +215,20 @@
if not specified -->
<attr name="twoPanelLandscapeBorderSpaceVerticalDps" format="float" />
-
+ <!-- allAppsCellSpacingDps defaults to borderSpaceDps, if not specified -->
<attr name="allAppsCellSpacingDps" format="float" />
+ <!-- The following values are only enabled if grid is supported. -->
+ <!-- allAppsIconSize defaults to iconSize, if not specified -->
+ <attr name="allAppsIconSize" format="float" />
+ <!-- allAppsIconTextSize defaults to iconTextSize, if not specified -->
+ <attr name="allAppsIconTextSize" format="float" />
<attr name="iconImageSize" format="float" />
<!-- landscapeIconSize defaults to iconImageSize, if not specified -->
<attr name="landscapeIconSize" format="float" />
<!-- twoPanelPortraitIconSize defaults to iconImageSize, if not specified -->
<attr name="twoPanelPortraitIconSize" format="float" />
- <!-- twoPanelLandscapeIconSize defaults to landscapeIconSize, if not specified -->
+ <!-- twoPanelLandscapeIconSize defaults to iconImageSize, if not specified -->
<attr name="twoPanelLandscapeIconSize" format="float" />
<attr name="iconTextSize" format="float" />
@@ -233,7 +236,7 @@
<attr name="landscapeIconTextSize" format="float" />
<!-- twoPanelPortraitIconTextSize defaults to iconTextSize, if not specified -->
<attr name="twoPanelPortraitIconTextSize" format="float" />
- <!-- twoPanelLandscapeIconTextSize defaults to landscapeIconTextSize, if not specified -->
+ <!-- twoPanelLandscapeIconTextSize defaults to iconTextSize, if not specified -->
<attr name="twoPanelLandscapeIconTextSize" format="float" />
<!-- If set, this display option is used to determine the default grid -->
@@ -242,12 +245,6 @@
<flag name="split_display" value="0x2" />
</attr>
- <!-- The following values are only enabled if grid is supported. -->
- <!-- allAppsIconSize defaults to iconSize, if not specified -->
- <attr name="allAppsIconSize" format="float" />
- <!-- allAppsIconTextSize defaults to iconTextSize, if not specified -->
- <attr name="allAppsIconTextSize" format="float" />
-
<!-- Margin on left and right of the workspace when GridDisplayOption#isScalable is true -->
<attr name="horizontalMargin" format="float"/>
<!-- twoPanelLandscapeHorizontalMargin defaults to horizontalMargin if not specified -->
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 4e06ff9..0b60b32 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -80,6 +80,7 @@
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 int qsbBottomMarginPx;
// All apps
- public int allAppsCellSpacingPx;
+ public Point allAppsCellSpacePx;
public int allAppsOpenVerticalTranslate;
public int allAppsCellHeightPx;
public int allAppsCellWidthPx;
@@ -262,6 +263,20 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
// 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 @@
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 @@
// 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 @@
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 @@
}
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 @@
+ workspaceBottomPadding - mWorkspacePageIndicatorOverlapWorkspace;
padding.set(desiredWorkspaceHorizontalMarginPx,
- (isScalableGrid ? workspaceTopPadding : edgeMarginPx),
+ workspaceTopPadding + (isScalableGrid ? 0 : edgeMarginPx),
desiredWorkspaceHorizontalMarginPx,
paddingBottom);
}
@@ -1094,19 +1050,10 @@
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 @@
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 @@
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 @@
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 cfc14b6..ca07249 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -86,6 +86,15 @@
// 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 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<TypedValue> mExtraAttrs;
@@ -221,17 +212,17 @@
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 @@
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 @@
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 @@
// 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 @@
@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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 0bdb37c..2e27f32 100644
--- a/src/com/android/launcher3/Partner.java
+++ b/src/com/android/launcher3/Partner.java
@@ -142,7 +142,7 @@
}
if (iconSize > 0) {
- inv.iconSize = iconSize;
+ inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT] = iconSize;
}
}
}