Update Folders to match spec.

Bug: 63825895
Change-Id: Ia1a139f1afd944eefcd370645142227317e2bf20
diff --git a/res/layout/folder_application.xml b/res/layout/folder_application.xml
index de861a0..9d4af0d 100644
--- a/res/layout/folder_application.xml
+++ b/res/layout/folder_application.xml
@@ -19,4 +19,9 @@
     xmlns:launcher="http://schemas.android.com/apk/res-auto"
     style="@style/BaseIcon"
     android:includeFontPadding="false"
-    launcher:iconDisplay="folder" />
+    android:paddingLeft="@dimen/folder_cell_x_padding"
+    android:paddingTop="@dimen/folder_cell_y_padding"
+    android:paddingRight="@dimen/folder_cell_x_padding"
+    android:paddingBottom="@dimen/folder_cell_y_padding"
+    launcher:centerVertically="true"
+    launcher:iconDisplay="folder"/>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 356de78..0eb3982 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -138,10 +138,11 @@
     <dimen name="folder_preview_padding">10dp</dimen>
     <dimen name="page_indicator_dot_size">8dp</dimen>
 
-    <dimen name="folder_cell_x_padding">9dp</dimen>
-    <dimen name="folder_cell_y_padding">6dp</dimen>
+    <dimen name="folder_cell_x_padding">8dp</dimen>
+    <dimen name="folder_cell_y_padding">8dp</dimen>
     <dimen name="folder_child_text_size">13sp</dimen>
-    <dimen name="folder_label_padding_top">4dp</dimen>
+    <dimen name="folder_child_icon_drawable_padding">8dp</dimen>
+    <dimen name="folder_label_padding_top">12dp</dimen>
     <dimen name="folder_label_padding_bottom">12dp</dimen>
     <dimen name="folder_label_text_size">14sp</dimen>
 
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 2d5f8d0..38011ea 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -108,6 +108,7 @@
     public int folderChildIconSizePx;
     public int folderChildTextSizePx;
     public int folderChildDrawablePaddingPx;
+    public final int folderChildDrawablePaddingOriginalPx;
 
     // Hotseat
     public int hotseatCellHeightPx;
@@ -220,6 +221,9 @@
         hotseatLandRightNavBarGutterPx = res.getDimensionPixelSize(
                 R.dimen.dynamic_grid_hotseat_land_right_nav_bar_gutter_width);
 
+        folderChildDrawablePaddingOriginalPx =
+                res.getDimensionPixelSize(R.dimen.folder_child_icon_drawable_padding);
+
         // Determine sizes.
         widthPx = width;
         heightPx = height;
@@ -390,15 +394,15 @@
         folderChildIconSizePx = (int) (Utilities.pxFromDp(inv.iconSize, dm) * scale);
         folderChildTextSizePx =
                 (int) (res.getDimensionPixelSize(R.dimen.folder_child_text_size) * scale);
+        folderChildDrawablePaddingPx = (int) (folderChildDrawablePaddingOriginalPx * scale);
 
         int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx);
         int cellPaddingX = (int) (res.getDimensionPixelSize(R.dimen.folder_cell_x_padding) * scale);
         int cellPaddingY = (int) (res.getDimensionPixelSize(R.dimen.folder_cell_y_padding) * scale);
 
         folderCellWidthPx = folderChildIconSizePx + 2 * cellPaddingX;
-        folderCellHeightPx = folderChildIconSizePx + 2 * cellPaddingY + textHeight;
-        folderChildDrawablePaddingPx = Math.max(0,
-                (folderCellHeightPx - folderChildIconSizePx - textHeight) / 3);
+        folderCellHeightPx = folderChildIconSizePx + 2 * cellPaddingY + textHeight
+                + folderChildDrawablePaddingPx;
     }
 
     public void updateInsets(Rect insets) {
diff --git a/src/com/android/launcher3/folder/FolderAnimationManager.java b/src/com/android/launcher3/folder/FolderAnimationManager.java
index 69705d5..d7f5c2b 100644
--- a/src/com/android/launcher3/folder/FolderAnimationManager.java
+++ b/src/com/android/launcher3/folder/FolderAnimationManager.java
@@ -120,6 +120,7 @@
         final DragLayer.LayoutParams lp = (DragLayer.LayoutParams) mFolder.getLayoutParams();
         FolderIcon.PreviewLayoutRule rule = mFolderIcon.getLayoutRule();
         final List<BubbleTextView> itemsInPreview = mFolderIcon.getPreviewItems();
+        BubbleTextView btv = itemsInPreview.get(0);
 
         // Match position of the FolderIcon
         final Rect folderIconPos = new Rect();
@@ -131,7 +132,7 @@
         // Match size/scale of icons in the preview
         float previewScale = rule.scaleForItem(0, itemsInPreview.size());
         float previewSize = rule.getIconSize() * previewScale;
-        float initialScale = previewSize / itemsInPreview.get(0).getIconSize()
+        float initialScale = previewSize / btv.getIconSize()
                 * scaleRelativeToDragLayer;
         final float finalScale = 1f;
         float scale = mIsOpening ? initialScale : finalScale;
@@ -148,10 +149,12 @@
             previewItemOffsetX = (int) (lp.width * initialScale - initialSize - previewItemOffsetX);
         }
 
+        // Note that we do not include btv.getPaddingLeft() in the calculation, since it is
+        // handled in addPreviewItemAnimators as part of iconOffsetX.
         final int paddingOffsetX = (int) ((mFolder.getPaddingLeft() + mContent.getPaddingLeft())
                 * initialScale);
-        final int paddingOffsetY = (int) ((mFolder.getPaddingTop() + mContent.getPaddingTop())
-                * initialScale);
+        final int paddingOffsetY = (int) ((mFolder.getPaddingTop() + mContent.getPaddingTop()
+                + btv.getPaddingTop()) * initialScale);
 
         int initialX = folderIconPos.left + mPreviewBackground.getOffsetX() - paddingOffsetX
                 - previewItemOffsetX;