Merge "Auto calculate grid card size"
diff --git a/res/layout/fragment_grid_picker.xml b/res/layout/fragment_grid_picker.xml
index aec8e49..34547fc 100644
--- a/res/layout/fragment_grid_picker.xml
+++ b/res/layout/fragment_grid_picker.xml
@@ -33,8 +33,8 @@
<FrameLayout
android:id="@+id/preview_card_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
android:clipToPadding="false"
android:paddingTop="@dimen/preview_page_top_margin"
android:paddingBottom="@dimen/preview_page_bottom_margin"
@@ -42,7 +42,8 @@
app:layout_constraintBottom_toTopOf="@+id/options_container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="@dimen/preview_card_vertical_bias">
<include layout="@layout/grid_preview_card" />
</FrameLayout>
diff --git a/src/com/android/customization/picker/grid/GridFragment.java b/src/com/android/customization/picker/grid/GridFragment.java
index 1ee75a6..c4029d6 100644
--- a/src/com/android/customization/picker/grid/GridFragment.java
+++ b/src/com/android/customization/picker/grid/GridFragment.java
@@ -18,6 +18,7 @@
import static com.android.wallpaper.widget.BottomActionBar.BottomAction.APPLY_TEXT;
import android.content.Context;
+import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -29,6 +30,8 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.constraintlayout.widget.ConstraintSet;
import androidx.core.widget.ContentLoadingProgressBar;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;
@@ -49,11 +52,13 @@
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.picker.AppbarFragment;
import com.android.wallpaper.util.LaunchUtils;
+import com.android.wallpaper.util.ScreenSizeCalculator;
import com.android.wallpaper.widget.BottomActionBar;
import com.bumptech.glide.Glide;
import java.util.List;
+import java.util.Locale;
/**
* Fragment that contains the UI for selecting and applying a GridOption.
@@ -67,7 +72,7 @@
private OptionSelectorController<GridOption> mOptionsController;
private GridOptionsManager mGridManager;
private ContentLoadingProgressBar mLoading;
- private View mContent;
+ private ConstraintLayout mContent;
private View mError;
private BottomActionBar mBottomActionBar;
private ThemesUserEventLogger mEventLogger;
@@ -117,6 +122,18 @@
// Make Talkback focus won't reset when notifyDataSetChange
mOptionsContainer.setItemAnimator(null);
}
+
+ // Set aspect ratio on the preview card dynamically.
+ Point mScreenSize;
+ ScreenSizeCalculator screenSizeCalculator = ScreenSizeCalculator.getInstance();
+ mScreenSize = screenSizeCalculator.getScreenSize(
+ requireActivity().getWindowManager().getDefaultDisplay());
+ ConstraintSet set = new ConstraintSet();
+ set.clone(mContent);
+ String ratio = String.format(Locale.US, "%d:%d", mScreenSize.x, mScreenSize.y);
+ set.setDimensionRatio(R.id.preview_card_container, ratio);
+ set.applyTo(mContent);
+
mLoading = view.findViewById(R.id.loading_indicator);
mError = view.findViewById(R.id.error_section);