From 58561d4fd7c6d2b8d8fa9445a11d032a92bb8034 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 17 Mar 2021 10:51:54 -0400 Subject: [PATCH] Dump DeviceProfile to help with debugging grid changes Some of these internal values are not exposed in hierarchy viewer Bug: 175329686 Test: Take bug report and verify output Change-Id: Ic39be510682fe5aeb03b7436858f6442895c796f --- src/com/android/launcher3/DeviceProfile.java | 106 +++++++++++++++++-- src/com/android/launcher3/Launcher.java | 1 + 2 files changed, 99 insertions(+), 8 deletions(-) diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index 90cc384e86..27fae4f5ac 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -17,6 +17,7 @@ package com.android.launcher3; import static com.android.launcher3.ResourceUtils.pxFromDp; +import static com.android.launcher3.Utilities.dpiFromPx; import android.content.Context; import android.content.res.Configuration; @@ -38,6 +39,8 @@ import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.DisplayController.Info; import com.android.launcher3.util.WindowBounds; +import java.io.PrintWriter; + public class DeviceProfile { private static final float TABLET_MIN_DPS = 600; @@ -91,8 +94,10 @@ public class DeviceProfile { public float workspaceSpringLoadShrinkFactor; public final int workspaceSpringLoadedBottomSpace; + private final int extraSpace; public int workspaceTopPadding; public int workspaceBottomPadding; + public int extraHotseatBottomPadding; // Workspace page indicator public final int workspacePageIndicatorHeight; @@ -109,7 +114,6 @@ public class DeviceProfile { public int workspaceCellPaddingXPx; public int cellYPaddingPx; - public int cellYPaddingOriginalPx; // Folder public float folderLabelTextScale; @@ -199,8 +203,7 @@ public class DeviceProfile { mInfo = info; // Constants from resources - float swDPs = Utilities.dpiFromPx( - Math.min(info.smallestSize.x, info.smallestSize.y), info.metrics); + float swDPs = dpiFromPx(Math.min(info.smallestSize.x, info.smallestSize.y), info.metrics); boolean allowRotation = context.getResources().getBoolean(R.bool.allow_rotation); // Tablet UI is built with assumption that simulated landscape is disabled. isTablet = allowRotation && swDPs >= TABLET_MIN_DPS; @@ -290,22 +293,22 @@ public class DeviceProfile { + (isScalableGrid ? 0 : hotseatExtraVerticalSize))); // Calculate all of the remaining variables. - int extraSpace = updateAvailableDimensions(res); + extraSpace = updateAvailableDimensions(res); // Now that we have all of the variables calculated, we can tune certain sizes. if (isScalableGrid) { DevicePadding padding = inv.devicePaddings.getDevicePadding(extraSpace); workspaceTopPadding = padding.getWorkspaceTopPadding(extraSpace); workspaceBottomPadding = padding.getWorkspaceBottomPadding(extraSpace); - float hotseatBarBottomPadding = padding.getHotseatBottomPadding(extraSpace); - hotseatBarSizePx += hotseatBarBottomPadding; - hotseatBarBottomPaddingPx += hotseatBarBottomPadding; + extraHotseatBottomPadding = padding.getHotseatBottomPadding(extraSpace); + hotseatBarSizePx += extraHotseatBottomPadding; + hotseatBarBottomPaddingPx += extraHotseatBottomPadding; } 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 // in portrait mode closer together by adding more height to the hotseat. // Note: This calculation was created after noticing a pattern in the design spec. - extraSpace = getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2 + int extraSpace = getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2 - workspacePageIndicatorHeight; hotseatBarSizePx += extraSpace; hotseatBarBottomPaddingPx += extraSpace; @@ -785,6 +788,93 @@ public class DeviceProfile { } } + private String pxToDpStr(String name, float value) { + return "\t" + name + ": " + value + "px (" + dpiFromPx(value, mInfo.metrics) + "dp)"; + } + + public void dump(String prefix, PrintWriter writer) { + writer.println(prefix + "DeviceProfile:"); + writer.println(prefix + "\t1 dp = " + mInfo.metrics.density + " px"); + + writer.println(prefix + "\tisTablet:" + isTablet); + writer.println(prefix + "\tisLargeTablet:" + isLargeTablet); + writer.println(prefix + "\tisPhone:" + isPhone); + writer.println(prefix + "\ttransposeLayoutWithOrientation:" + + transposeLayoutWithOrientation); + + writer.println(prefix + "\tisLandscape:" + isLandscape); + writer.println(prefix + "\tisMultiWindowMode:" + isMultiWindowMode); + + writer.println(prefix + pxToDpStr("windowX", windowX)); + writer.println(prefix + pxToDpStr("windowY", windowY)); + writer.println(prefix + pxToDpStr("widthPx", widthPx)); + writer.println(prefix + pxToDpStr("heightPx", heightPx)); + + writer.println(prefix + pxToDpStr("availableWidthPx", availableWidthPx)); + writer.println(prefix + pxToDpStr("availableHeightPx", availableHeightPx)); + + writer.println(prefix + "\taspectRatio:" + aspectRatio); + + writer.println(prefix + "\tisScalableGrid:" + isScalableGrid); + + writer.println(prefix + "\tinv.minCellWidth:" + inv.minCellWidth + "dp"); + writer.println(prefix + "\tinv.minCellHeight:" + inv.minCellHeight + "dp"); + + writer.println(prefix + pxToDpStr("cellWidthPx", cellWidthPx)); + writer.println(prefix + pxToDpStr("cellHeightPx", cellHeightPx)); + + 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("iconSizePx", iconSizePx)); + writer.println(prefix + pxToDpStr("iconTextSizePx", iconTextSizePx)); + writer.println(prefix + pxToDpStr("iconDrawablePaddingPx", iconDrawablePaddingPx)); + + writer.println(prefix + pxToDpStr("folderCellWidthPx", folderCellWidthPx)); + writer.println(prefix + pxToDpStr("folderCellHeightPx", folderCellHeightPx)); + writer.println(prefix + pxToDpStr("folderChildIconSizePx", folderChildIconSizePx)); + writer.println(prefix + pxToDpStr("folderChildTextSizePx", folderChildTextSizePx)); + writer.println(prefix + pxToDpStr("folderChildDrawablePaddingPx", + folderChildDrawablePaddingPx)); + + writer.println(prefix + pxToDpStr("cellLayoutBorderSpacingPx", + cellLayoutBorderSpacingPx)); + writer.println(prefix + pxToDpStr("desiredWorkspaceLeftRightMarginPx", + desiredWorkspaceLeftRightMarginPx)); + + writer.println(prefix + pxToDpStr("allAppsIconSizePx", allAppsIconSizePx)); + writer.println(prefix + pxToDpStr("allAppsIconTextSizePx", allAppsIconTextSizePx)); + writer.println(prefix + pxToDpStr("allAppsIconDrawablePaddingPx", + allAppsIconDrawablePaddingPx)); + writer.println(prefix + pxToDpStr("allAppsCellHeightPx", allAppsCellHeightPx)); + + writer.println(prefix + pxToDpStr("hotseatBarSizePx", hotseatBarSizePx)); + writer.println(prefix + pxToDpStr("hotseatCellHeightPx", hotseatCellHeightPx)); + writer.println(prefix + pxToDpStr("hotseatBarTopPaddingPx", hotseatBarTopPaddingPx)); + writer.println(prefix + pxToDpStr("hotseatBarBottomPaddingPx", hotseatBarBottomPaddingPx)); + writer.println(prefix + pxToDpStr("hotseatBarSidePaddingStartPx", + hotseatBarSidePaddingStartPx)); + writer.println(prefix + pxToDpStr("hotseatBarSidePaddingEndPx", + hotseatBarSidePaddingEndPx)); + + writer.println(prefix + "\tisTaskbarPresent:" + isTaskbarPresent); + + writer.println(prefix + pxToDpStr("taskbarSize", taskbarSize)); + writer.println(prefix + pxToDpStr("nonOverlappingTaskbarInset", + nonOverlappingTaskbarInset)); + + writer.println(prefix + pxToDpStr("workspacePadding.left", workspacePadding.left)); + writer.println(prefix + pxToDpStr("workspacePadding.top", workspacePadding.top)); + writer.println(prefix + pxToDpStr("workspacePadding.right", workspacePadding.right)); + writer.println(prefix + pxToDpStr("workspacePadding.bottom", workspacePadding.bottom)); + + writer.println(prefix + pxToDpStr("extraSpace", extraSpace)); + writer.println(prefix + pxToDpStr("workspaceTopPadding", workspaceTopPadding)); + writer.println(prefix + pxToDpStr("workspaceBottomPadding", workspaceBottomPadding)); + writer.println(prefix + pxToDpStr("extraHotseatBottomPadding", extraHotseatBottomPadding)); + } + private static Context getContext(Context c, Info info, int orientation) { Configuration config = new Configuration(c.getResources().getConfiguration()); config.orientation = orientation; diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index c57f62171e..89c0f6697e 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2634,6 +2634,7 @@ public class Launcher extends StatefulActivity implements Launche mDragLayer.dump(prefix, writer); mStateManager.dump(prefix, writer); mPopupDataProvider.dump(prefix, writer); + mDeviceProfile.dump(prefix, writer); try { FileLog.flushAll(writer);