Add full preview for Grid (part 2)

Update the grid preview card ratio, and add common dimens for full preview pages.
Before: https://screenshot.googleplex.com/thKsXZgStcX.png
After: https://screenshot.googleplex.com/rYyPe4ARwm3.png

Test: Manually
Bug: 151287994
Change-Id: I17e974978e990d38991ee0675cc06d06694f0f19
diff --git a/res/layout/fragment_live_preview_v2.xml b/res/layout/fragment_live_preview_v2.xml
index 8220c1b..227aef4 100644
--- a/res/layout/fragment_live_preview_v2.xml
+++ b/res/layout/fragment_live_preview_v2.xml
@@ -35,16 +35,16 @@
             android:layout_width="match_parent"
             android:layout_height="@dimen/live_preview_card_height"
             android:background="@color/preview_pager_background"
-            android:paddingTop="@dimen/live_preview_card_padding_top"
-            android:paddingBottom="@dimen/live_preview_card_padding_bottom" />
+            android:paddingTop="@dimen/full_preview_page_default_padding_top"
+            android:paddingBottom="@dimen/full_preview_page_default_padding_bottom" />
 
         <include
             android:id="@+id/permission_needed"
             layout="@layout/grid_item_permission_needed"
             android:layout_width="match_parent"
             android:layout_height="@dimen/live_preview_card_height"
-            android:paddingTop="@dimen/live_preview_card_padding_top"
-            android:paddingBottom="@dimen/live_preview_card_padding_bottom"
+            android:paddingTop="@dimen/full_preview_page_default_padding_top"
+            android:paddingBottom="@dimen/full_preview_page_default_padding_bottom"
             android:visibility="gone" />
     </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 5ececef..ce07e6c 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -207,9 +207,12 @@
     <!-- The maximum height ratio of PreviewPager and its parent view. -->
     <item name="preview_pager_maximum_height_ratio" format="float" type="dimen">0.7</item>
 
-    <!-- Dimensions for live wallpaper preview -->
-    <dimen name="live_preview_card_padding_top">24dp</dimen>
-    <dimen name="live_preview_card_padding_bottom">24dp</dimen>
+    <!-- Dimensions for full preview page -->
+    <dimen name="full_preview_page_default_padding_top">24dp</dimen>
+    <dimen name="full_preview_page_default_padding_bottom">32dp</dimen>
+    <dimen name="full_preview_page_editing_padding_bottom">0dp</dimen>
+
+    <!-- Dimensions for full preview page -->
     <dimen name="live_preview_card_height">690dp</dimen>
 
     <!-- Dimensions for the bottom bar. -->
diff --git a/src/com/android/wallpaper/picker/CategoryFragment.java b/src/com/android/wallpaper/picker/CategoryFragment.java
index 396d3ed..de50d4f 100755
--- a/src/com/android/wallpaper/picker/CategoryFragment.java
+++ b/src/com/android/wallpaper/picker/CategoryFragment.java
@@ -651,11 +651,11 @@
      * Returns the width to use for the home screen wallpaper in the "single metadata" configuration.
      */
     private int getSingleWallpaperImageWidth() {
-        Point screenSize = ScreenSizeCalculator.getInstance()
-                .getScreenSize(getActivity().getWindowManager().getDefaultDisplay());
-
-        int height = getResources().getDimensionPixelSize(R.dimen.single_metadata_card_layout_height);
-        return height * screenSize.x / screenSize.y;
+        final float screenAspectRatio =
+                ScreenSizeCalculator.getInstance().getScreenAspectRatio(getContext());
+        int height = getResources().getDimensionPixelSize(
+                R.dimen.single_metadata_card_layout_height);
+        return (int) (height / screenAspectRatio);
     }
 
     /**
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index 62578b1..d5eec54 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -506,8 +506,9 @@
             int containerWidth = mWorkspaceContainer.getMeasuredWidth();
             int containerHeight = mWorkspaceContainer.getMeasuredHeight();
 
-            int topPadding = dpToPx(24, mDisplayMetrics.density);
-            int bottomPadding = dpToPx(getBottomPaddingInDp(), mDisplayMetrics.density);
+            int topPadding = getResources().getDimensionPixelSize(
+                    R.dimen.full_preview_page_default_padding_top);
+            int bottomPadding = getBottomPaddingInDp();
             double horizontalPadding = containerWidth
                     - (containerHeight - topPadding - bottomPadding) * 1.0
                             * mDisplayMetrics.widthPixels / mDisplayMetrics.heightPixels;
@@ -524,10 +525,12 @@
     private int getBottomPaddingInDp() {
         switch (mMode) {
             case MODE_EDITING:
-                return 0;
+                return getResources().getDimensionPixelSize(
+                        R.dimen.full_preview_page_editing_padding_bottom);
             case MODE_DEFAULT:
             default:
-                return 32;
+                return getResources().getDimensionPixelSize(
+                        R.dimen.full_preview_page_default_padding_bottom);
         }
     }
 
@@ -537,8 +540,4 @@
         mMode = enabled ? MODE_EDITING : MODE_DEFAULT;
         mTabs.setVisibility(mMode == MODE_EDITING ? View.VISIBLE : View.GONE);
     }
-
-    private static int dpToPx(int dp, float density) {
-        return (int) (dp * density + 0.5f);
-    }
 }
diff --git a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
index b513dc2..4284de3 100755
--- a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
+++ b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
@@ -21,7 +21,6 @@
 import android.content.Intent;
 import android.graphics.Color;
 import android.graphics.Insets;
-import android.graphics.Point;
 import android.graphics.PorterDuff.Mode;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
@@ -441,12 +440,12 @@
      * Returns the width (in physical px) to use for the "currently set wallpaper" thumbnail.
      */
     private int getSingleWallpaperImageWidthPx() {
-        Point screenSize = ScreenSizeCalculator.getInstance().getScreenSize(
-                getWindowManager().getDefaultDisplay());
+        final float screenAspectRatio =
+                ScreenSizeCalculator.getInstance().getScreenAspectRatio(this);
 
         int height = getResources().getDimensionPixelSize(
                 R.dimen.current_wallpaper_bottom_sheet_thumb_height);
-        return height * screenSize.x / screenSize.y;
+        return (int) (height / screenAspectRatio);
     }
 
     /**
diff --git a/src/com/android/wallpaper/util/ScreenSizeCalculator.java b/src/com/android/wallpaper/util/ScreenSizeCalculator.java
index d55cf99..d206e55 100755
--- a/src/com/android/wallpaper/util/ScreenSizeCalculator.java
+++ b/src/com/android/wallpaper/util/ScreenSizeCalculator.java
@@ -15,6 +15,7 @@
  */
 package com.android.wallpaper.util;
 
+import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Point;
@@ -22,6 +23,7 @@
 import android.os.Build.VERSION_CODES;
 import android.util.Log;
 import android.view.Display;
+import android.view.WindowManager;
 
 /**
  * Calculates the size of the device's screen.
@@ -70,6 +72,17 @@
         }
     }
 
+    /**
+     * Calculates the device's aspect ratio (height/width).
+     *
+     * Note: The screen size is getting from {@link #getScreenSize}.
+     */
+    public float getScreenAspectRatio(Context context) {
+        final WindowManager windowManager = context.getSystemService(WindowManager.class);
+        final Point screenSize = getScreenSize(windowManager.getDefaultDisplay());
+        return (float) screenSize.y / screenSize.x;
+    }
+
     private Point getPortraitScreenSize(Display display) {
         if (mPortraitScreenSize == null) {
             mPortraitScreenSize = new Point();
diff --git a/src/com/android/wallpaper/widget/WallpaperPreviewCard.java b/src/com/android/wallpaper/widget/WallpaperPreviewCard.java
index e57d946..7546aa2 100644
--- a/src/com/android/wallpaper/widget/WallpaperPreviewCard.java
+++ b/src/com/android/wallpaper/widget/WallpaperPreviewCard.java
@@ -16,10 +16,8 @@
 package com.android.wallpaper.widget;
 
 import android.content.Context;
-import android.graphics.Point;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
-import android.view.WindowManager;
 import android.widget.LinearLayout;
 
 import com.android.wallpaper.R;
@@ -43,10 +41,7 @@
     public WallpaperPreviewCard(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
         LayoutInflater.from(context).inflate(R.layout.wallpaper_preview_card_layout, this);
-        WindowManager windowManager = getContext().getSystemService(WindowManager.class);
-        Point screenSize = ScreenSizeCalculator.getInstance()
-                .getScreenSize(windowManager.getDefaultDisplay());
-        mScreenAspectRatio = (float) screenSize.y / screenSize.x;
+        mScreenAspectRatio = ScreenSizeCalculator.getInstance().getScreenAspectRatio(getContext());
     }
 
     @Override