Launcher grid changes.

* Tighten up space on Workspace/All Apps for tall devices.
* Decrease the cell layout padding.

Bug: 63996463
Change-Id: Ifc89e4786b7033e2af77d3742006d8c9ee719081
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index 3ecdf59..1b58e17 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -29,6 +29,8 @@
     <dimen name="dynamic_grid_min_page_indicator_size">48dp</dimen>
     <dimen name="dynamic_grid_icon_drawable_padding">4dp</dimen>
 
+    <dimen name="dynamic_grid_cell_layout_padding">0dp</dimen>
+
     <dimen name="folder_preview_padding">2dp</dimen>
 
     <!-- Hotseat -->
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 0eb3982..1d93b2a 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -30,6 +30,7 @@
     <!-- Minimum space between workspace and hotseat in spring loaded mode -->
     <dimen name="dynamic_grid_min_spring_loaded_space">8dp</dimen>
 
+    <dimen name="dynamic_grid_cell_layout_padding">5.5dp</dimen>
     <dimen name="dynamic_grid_cell_padding_x">8dp</dimen>
 
     <!-- Hotseat -->
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index cb4ad55..153131b 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -63,6 +63,8 @@
      */
     private static final float MAX_HORIZONTAL_PADDING_PERCENT = 0.14f;
 
+    private static final float TALL_DEVICE_ASPECT_RATIO_THRESHOLD = 1.82f;
+
     // Overview mode
     private final int overviewModeMinIconZoneHeightPx;
     private final int overviewModeMaxIconZoneHeightPx;
@@ -174,7 +176,8 @@
         defaultWidgetPadding = AppWidgetHostView.getDefaultPaddingForWidget(context, cn, null);
         edgeMarginPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_edge_margin);
         desiredWorkspaceLeftRightMarginPx = isVerticalBarLayout() ? 0 : edgeMarginPx;
-        cellLayoutPaddingLeftRightPx = isVerticalBarLayout() ? 0 : edgeMarginPx;
+        cellLayoutPaddingLeftRightPx =
+                res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_layout_padding);
         pageIndicatorSizePx = res.getDimensionPixelSize(
                 R.dimen.dynamic_grid_min_page_indicator_size);
         pageIndicatorLandGutterPx = res.getDimensionPixelSize(
@@ -239,17 +242,18 @@
         updateAvailableDimensions(dm, res);
 
         // Now that we have all of the variables calculated, we can tune certain sizes.
-        if (!isVerticalBarLayout()) {
+        float aspectRatio = ((float) Math.max(availableWidthPx, availableHeightPx))
+                / Math.min(availableWidthPx, availableHeightPx);
+        boolean isTallDevice = Float.compare(aspectRatio, TALL_DEVICE_ASPECT_RATIO_THRESHOLD) >= 0;
+        if (!isVerticalBarLayout() && isPhone && isTallDevice) {
             // We increase the page indicator 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 increasing the page indicator size.
-            int newPageIndicatorSizePx = getCellSize().y - iconSizePx - iconTextSizePx
-                    - iconDrawablePaddingOriginalPx;
-            if (newPageIndicatorSizePx > pageIndicatorSizePx) {
-                pageIndicatorSizePx = newPageIndicatorSizePx;
-                // Recalculate the available dimensions using the new page indicator size.
-                updateAvailableDimensions(dm, res);
-            }
+            // Note: This calculation was created after noticing a pattern in the design spec.
+            pageIndicatorSizePx = getCellSize().y - iconSizePx - iconDrawablePaddingPx;
+
+            // Recalculate the available dimensions using the new page indicator size.
+            updateAvailableDimensions(dm, res);
         }
 
         computeAllAppsButtonSize(context);