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