From 8cd020bb1dbc0846aeb04ebbccf1cc0972abdc72 Mon Sep 17 00:00:00 2001 From: Thales Lima Date: Tue, 15 Mar 2022 20:15:14 +0000 Subject: [PATCH] Reset the size of hotseat cells When resetting the hotseat layout, the size of cells also can be changed based on changes in DeviceProfile. In this case, the border size changes when rotating the device. Fixes 216071526 Test: manual and HSV Change-Id: Idf7b7972e7be347a991cad1cb8ee8cf95cbc4a87 --- src/com/android/launcher3/CellLayout.java | 52 +++++++++++++++-------- src/com/android/launcher3/Hotseat.java | 1 + 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index ad4cae4440..d235180314 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -93,7 +93,7 @@ public class CellLayout extends ViewGroup { private int mFixedCellWidth; private int mFixedCellHeight; @ViewDebug.ExportedProperty(category = "launcher") - private final Point mBorderSpace; + private Point mBorderSpace; @ViewDebug.ExportedProperty(category = "launcher") private int mCountX; @@ -238,22 +238,7 @@ public class CellLayout extends ViewGroup { mActivity = ActivityContext.lookupContext(context); DeviceProfile deviceProfile = mActivity.getDeviceProfile(); - switch (mContainerType) { - case FOLDER: - mBorderSpace = new Point(deviceProfile.folderCellLayoutBorderSpacePx); - break; - case HOTSEAT: - mBorderSpace = new Point(deviceProfile.hotseatBorderSpace, - deviceProfile.hotseatBorderSpace); - break; - case WORKSPACE: - default: - mBorderSpace = new Point(deviceProfile.cellLayoutBorderSpacePx); - break; - } - - mCellWidth = mCellHeight = -1; - mFixedCellWidth = mFixedCellHeight = -1; + resetCellSizeInternal(deviceProfile); mCountX = deviceProfile.inv.numColumns; mCountY = deviceProfile.inv.numRows; @@ -376,6 +361,12 @@ public class CellLayout extends ViewGroup { return mShortcutsAndWidgets.getLayerType() == LAYER_TYPE_HARDWARE; } + /** + * Change sizes of cells + * + * @param width the new width of the cells + * @param height the new height of the cells + */ public void setCellDimensions(int width, int height) { mFixedCellWidth = mCellWidth = width; mFixedCellHeight = mCellHeight = height; @@ -383,6 +374,33 @@ public class CellLayout extends ViewGroup { mBorderSpace); } + private void resetCellSizeInternal(DeviceProfile deviceProfile) { + switch (mContainerType) { + case FOLDER: + mBorderSpace = new Point(deviceProfile.folderCellLayoutBorderSpacePx); + break; + case HOTSEAT: + mBorderSpace = new Point(deviceProfile.hotseatBorderSpace, + deviceProfile.hotseatBorderSpace); + break; + case WORKSPACE: + default: + mBorderSpace = new Point(deviceProfile.cellLayoutBorderSpacePx); + break; + } + + mCellWidth = mCellHeight = -1; + mFixedCellWidth = mFixedCellHeight = -1; + } + + /** + * Reset the cell sizes and border space + */ + public void resetCellSize(DeviceProfile deviceProfile) { + resetCellSizeInternal(deviceProfile); + requestLayout(); + } + public void setGridSize(int x, int y) { mCountX = x; mCountY = y; diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java index e1680fc7e7..d7cdb8f283 100644 --- a/src/com/android/launcher3/Hotseat.java +++ b/src/com/android/launcher3/Hotseat.java @@ -84,6 +84,7 @@ public class Hotseat extends CellLayout implements Insettable { removeAllViewsInLayout(); mHasVerticalHotseat = hasVerticalHotseat; DeviceProfile dp = mActivity.getDeviceProfile(); + resetCellSize(dp); if (hasVerticalHotseat) { setGridSize(1, dp.numShownHotseatIcons); } else {