Make folder sizes customizable
Introduce new attrs for folder sizes and update all grids to use the new attrs
Fix: 214582832
Fix: 236272949
Test: atest DeviceProfileTest
Test: manual comparison with mocks
Change-Id: I638052a7f01b4951df0dd26db577167468a3c46d
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 418df37..7cefef9 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -144,7 +144,6 @@
// Folder content
public Point folderCellLayoutBorderSpacePx;
- public int folderCellLayoutBorderSpaceOriginalPx;
public int folderContentPaddingLeftRight;
public int folderContentPaddingTop;
@@ -321,9 +320,8 @@
pxFromDp(inv.allAppsBorderSpaces[mTypeIndex].x, mMetrics),
pxFromDp(inv.allAppsBorderSpaces[mTypeIndex].y, mMetrics));
cellLayoutBorderSpaceOriginalPx = new Point(cellLayoutBorderSpacePx);
- folderCellLayoutBorderSpaceOriginalPx = pxFromDp(inv.folderBorderSpace, mMetrics);
- folderCellLayoutBorderSpacePx = new Point(folderCellLayoutBorderSpaceOriginalPx,
- folderCellLayoutBorderSpaceOriginalPx);
+ folderCellLayoutBorderSpacePx = new Point(pxFromDp(inv.folderBorderSpaces.x, mMetrics),
+ pxFromDp(inv.folderBorderSpaces.y, mMetrics));
workspacePageIndicatorHeight = res.getDimensionPixelSize(
R.dimen.workspace_page_indicator_height);
@@ -919,16 +917,14 @@
int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx);
if (isScalableGrid) {
- int minWidth = folderChildIconSizePx + iconDrawablePaddingPx * 2;
- int minHeight = folderChildIconSizePx + iconDrawablePaddingPx * 2 + textHeight;
+ folderCellWidthPx = pxFromDp(inv.folderCellSize.x, mMetrics, scale);
+ folderCellHeightPx = pxFromDp(inv.folderCellSize.y, mMetrics, scale);
- folderCellWidthPx = (int) Math.max(minWidth, cellWidthPx * scale);
- folderCellHeightPx = (int) Math.max(minHeight, cellHeightPx * scale);
-
- int scaledSpace = (int) (folderCellLayoutBorderSpaceOriginalPx * scale);
- folderCellLayoutBorderSpacePx = new Point(scaledSpace, scaledSpace);
- folderContentPaddingLeftRight = scaledSpace;
- folderContentPaddingTop = scaledSpace;
+ folderCellLayoutBorderSpacePx = new Point(
+ pxFromDp(inv.folderBorderSpaces.x, mMetrics, scale),
+ pxFromDp(inv.folderBorderSpaces.y, mMetrics, scale));
+ folderContentPaddingLeftRight = folderCellLayoutBorderSpacePx.x;
+ folderContentPaddingTop = pxFromDp(inv.folderTopPadding, mMetrics, scale);
} else {
int cellPaddingX = (int) (res.getDimensionPixelSize(R.dimen.folder_cell_x_padding)
* scale);
@@ -1391,12 +1387,13 @@
writer.println(prefix + pxToDpStr("folderChildTextSizePx", folderChildTextSizePx));
writer.println(prefix + pxToDpStr("folderChildDrawablePaddingPx",
folderChildDrawablePaddingPx));
- writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpaceOriginalPx",
- folderCellLayoutBorderSpaceOriginalPx));
writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpacePx Horizontal",
folderCellLayoutBorderSpacePx.x));
writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpacePx Vertical",
folderCellLayoutBorderSpacePx.y));
+ writer.println(prefix + pxToDpStr("folderContentPaddingLeftRight",
+ folderContentPaddingLeftRight));
+ writer.println(prefix + pxToDpStr("folderTopPadding", folderContentPaddingTop));
writer.println(prefix + pxToDpStr("bottomSheetTopPadding", bottomSheetTopPadding));
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index cf2a3f8..bb7c0a4 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -127,9 +127,12 @@
public PointF[] minCellSize;
public PointF[] borderSpaces;
- public float folderBorderSpace;
public int inlineNavButtonsEndSpacing;
+ public PointF folderBorderSpaces;
+ public PointF folderCellSize;
+ public float folderTopPadding;
+
public float[] horizontalMargin;
public PointF[] allAppsCellSize;
@@ -353,7 +356,10 @@
minCellSize = displayOption.minCellSize;
borderSpaces = displayOption.borderSpaces;
- folderBorderSpace = displayOption.folderBorderSpace;
+
+ folderBorderSpaces = displayOption.folderBorderSpaces;
+ folderCellSize = displayOption.folderCellSize;
+ folderTopPadding = displayOption.folderTopPadding;
horizontalMargin = displayOption.horizontalMargin;
@@ -828,7 +834,10 @@
private final PointF[] minCellSize = new PointF[COUNT_SIZES];
- private float folderBorderSpace;
+ private final PointF folderCellSize;
+ private final PointF folderBorderSpaces;
+ private float folderTopPadding;
+
private final PointF[] borderSpaces = new PointF[COUNT_SIZES];
private final float[] horizontalMargin = new float[COUNT_SIZES];
private final float[] hotseatBarBottomSpace = new float[COUNT_SIZES];
@@ -924,7 +933,20 @@
borderSpaceTwoPanelLandscape);
borderSpaces[INDEX_TWO_PANEL_LANDSCAPE] = new PointF(x, y);
- folderBorderSpace = borderSpace;
+ x = a.getFloat(R.styleable.ProfileDisplayOption_folderCellWidth,
+ minCellSize[INDEX_DEFAULT].x);
+ y = a.getFloat(R.styleable.ProfileDisplayOption_folderCellHeight,
+ minCellSize[INDEX_DEFAULT].y);
+ folderCellSize = new PointF(x, y);
+
+ float folderBorderSpace = a.getFloat(R.styleable.ProfileDisplayOption_folderBorderSpace,
+ borderSpace);
+
+ x = y = folderBorderSpace;
+ folderBorderSpaces = new PointF(x, y);
+
+ folderTopPadding = a.getFloat(R.styleable.ProfileDisplayOption_folderTopPadding,
+ folderBorderSpaces.y);
x = a.getFloat(R.styleable.ProfileDisplayOption_allAppsCellWidth,
minCellSize[INDEX_DEFAULT].x);
@@ -1099,6 +1121,9 @@
allAppsBorderSpaces[i] = new PointF();
inlineQsb[i] = false;
}
+ folderBorderSpaces = new PointF();
+ folderCellSize = new PointF();
+ folderTopPadding = 0f;
}
private DisplayOption multiply(float w) {
@@ -1119,8 +1144,11 @@
allAppsBorderSpaces[i].x *= w;
allAppsBorderSpaces[i].y *= w;
}
-
- folderBorderSpace *= w;
+ folderBorderSpaces.x *= w;
+ folderBorderSpaces.y *= w;
+ folderCellSize.x *= w;
+ folderCellSize.y *= w;
+ folderTopPadding *= w;
return this;
}
@@ -1144,8 +1172,11 @@
allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y;
inlineQsb[i] |= p.inlineQsb[i];
}
-
- folderBorderSpace += p.folderBorderSpace;
+ folderBorderSpaces.x += p.folderBorderSpaces.x;
+ folderBorderSpaces.y += p.folderBorderSpaces.y;
+ folderCellSize.x += p.folderCellSize.x;
+ folderCellSize.y += p.folderCellSize.y;
+ folderTopPadding += p.folderTopPadding;
return this;
}