Merge "Force theme icons to stay on one row and adjust size to fit" into tm-qpr-dev
diff --git a/res/drawable/color_chip_seed_filled0.xml b/res/drawable/color_chip_seed_filled0.xml
index a93bc6b..2d4376c 100644
--- a/res/drawable/color_chip_seed_filled0.xml
+++ b/res/drawable/color_chip_seed_filled0.xml
@@ -19,10 +19,10 @@
<item>
<shape android:shape="rectangle">
<corners
- android:topLeftRadius="@dimen/component_color_chip_small_size_default" />
+ android:topLeftRadius="@dimen/component_color_chip_small_radius_default" />
<size
- android:width="@dimen/component_color_chip_small_size_default"
- android:height="@dimen/component_color_chip_small_size_default" />
+ android:width="@dimen/component_color_chip_small_radius_default"
+ android:height="@dimen/component_color_chip_small_radius_default" />
<solid android:color="@android:color/black" />
</shape>
</item>
diff --git a/res/drawable/color_chip_seed_filled1.xml b/res/drawable/color_chip_seed_filled1.xml
index a0672bc..1514939 100644
--- a/res/drawable/color_chip_seed_filled1.xml
+++ b/res/drawable/color_chip_seed_filled1.xml
@@ -19,10 +19,10 @@
<item>
<shape android:shape="rectangle">
<corners
- android:bottomLeftRadius="@dimen/component_color_chip_small_size_default" />
+ android:bottomLeftRadius="@dimen/component_color_chip_small_radius_default" />
<size
- android:width="@dimen/component_color_chip_small_size_default"
- android:height="@dimen/component_color_chip_small_size_default" />
+ android:width="@dimen/component_color_chip_small_radius_default"
+ android:height="@dimen/component_color_chip_small_radius_default" />
<solid android:color="@android:color/black" />
</shape>
</item>
diff --git a/res/drawable/color_chip_seed_filled2.xml b/res/drawable/color_chip_seed_filled2.xml
index 545fbdd..b415bb2 100644
--- a/res/drawable/color_chip_seed_filled2.xml
+++ b/res/drawable/color_chip_seed_filled2.xml
@@ -19,10 +19,10 @@
<item>
<shape android:shape="rectangle">
<corners
- android:topRightRadius="@dimen/component_color_chip_small_size_default" />
+ android:topRightRadius="@dimen/component_color_chip_small_radius_default" />
<size
- android:width="@dimen/component_color_chip_small_size_default"
- android:height="@dimen/component_color_chip_small_size_default" />
+ android:width="@dimen/component_color_chip_small_radius_default"
+ android:height="@dimen/component_color_chip_small_radius_default" />
<solid android:color="@android:color/black" />
</shape>
</item>
diff --git a/res/drawable/color_chip_seed_filled3.xml b/res/drawable/color_chip_seed_filled3.xml
index 0e286a5..49f429d 100644
--- a/res/drawable/color_chip_seed_filled3.xml
+++ b/res/drawable/color_chip_seed_filled3.xml
@@ -19,10 +19,10 @@
<item>
<shape android:shape="rectangle">
<corners
- android:bottomRightRadius="@dimen/component_color_chip_small_size_default" />
+ android:bottomRightRadius="@dimen/component_color_chip_small_radius_default" />
<size
- android:width="@dimen/component_color_chip_small_size_default"
- android:height="@dimen/component_color_chip_small_size_default" />
+ android:width="@dimen/component_color_chip_small_radius_default"
+ android:height="@dimen/component_color_chip_small_radius_default" />
<solid android:color="@android:color/black" />
</shape>
</item>
diff --git a/res/layout/color_option.xml b/res/layout/color_option.xml
index 9bbfd7f..d9a7136 100644
--- a/res/layout/color_option.xml
+++ b/res/layout/color_option.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
Copyright (C) 2022 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,50 +13,91 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<!-- Enclosing layout must be match_parent so that we can center content within -->
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_gravity="center"
android:clipChildren="false"
- android:clipToPadding="false"
- android:orientation="vertical">
+ android:gravity="center"
+ android:padding="@dimen/option_tile_grid_tile_padding_min">
- <FrameLayout
- android:id="@+id/option_tile"
- android:layout_width="@dimen/option_tile_width"
- android:layout_height="@dimen/option_tile_width"
- android:layout_gravity="center_horizontal"
- android:background="@drawable/option_border_color">
- <ImageView
- android:id="@+id/color_preview_0"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ <!--
+ This displays the background. It is dynamically sized, constrained remain square and
+ have a maximum size, and be centered within its parent.
+ -->
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_gravity="center"
+ android:background="@drawable/option_border_color"
+ android:gravity="center"
+ android:padding="@dimen/option_tile_grid_icon_padding_min"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintDimensionRatio="1:1"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintWidth_max="@dimen/option_tile_width">
+
+ <!-- This is the color wheel itself, constrained to a maximum size and centered -->
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/option_tile"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
android:layout_gravity="center"
- android:layout_marginRight="@dimen/color_seed_chip_margin"
- android:layout_marginBottom="@dimen/color_seed_chip_margin"
- android:src="@drawable/color_chip_seed_filled0"/>
- <ImageView
- android:id="@+id/color_preview_1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginLeft="@dimen/color_seed_chip_margin"
- android:layout_marginBottom="@dimen/color_seed_chip_margin"
- android:src="@drawable/color_chip_seed_filled2"/>
- <ImageView
- android:id="@+id/color_preview_2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginRight="@dimen/color_seed_chip_margin"
- android:layout_marginTop="@dimen/color_seed_chip_margin"
- android:src="@drawable/color_chip_seed_filled1"/>
- <ImageView
- android:id="@+id/color_preview_3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginLeft="@dimen/color_seed_chip_margin"
- android:layout_marginTop="@dimen/color_seed_chip_margin"
- android:src="@drawable/color_chip_seed_filled3"/>
- </FrameLayout>
-</FrameLayout>
+ android:gravity="center"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHeight_max="@dimen/component_color_chip_small_diameter_default"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintWidth_max="@dimen/component_color_chip_small_diameter_default">
+
+ <ImageView
+ android:id="@+id/color_preview_0"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:adjustViewBounds="true"
+ android:src="@drawable/color_chip_seed_filled0"
+ app:layout_constraintHeight_percent=".50"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintWidth_percent=".50" />
+
+ <ImageView
+ android:id="@+id/color_preview_1"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:adjustViewBounds="true"
+ android:src="@drawable/color_chip_seed_filled2"
+ app:layout_constraintHeight_percent=".50"
+ app:layout_constraintLeft_toRightOf="@id/color_preview_0"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintWidth_percent=".50" />
+
+ <ImageView
+ android:id="@+id/color_preview_2"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:adjustViewBounds="true"
+ android:src="@drawable/color_chip_seed_filled1"
+ app:layout_constraintHeight_percent=".50"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/color_preview_0"
+ app:layout_constraintWidth_percent=".50" />
+
+ <ImageView
+ android:id="@+id/color_preview_3"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:adjustViewBounds="true"
+ android:src="@drawable/color_chip_seed_filled3"
+ app:layout_constraintHeight_percent=".50"
+ app:layout_constraintLeft_toRightOf="@id/color_preview_2"
+ app:layout_constraintTop_toBottomOf="@id/color_preview_1"
+ app:layout_constraintWidth_percent=".50" />
+ </androidx.constraintlayout.widget.ConstraintLayout>
+ </androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/values-w600dp-port/dimens.xml b/res/values-w600dp-port/dimens.xml
index ba92746..112e396 100644
--- a/res/values-w600dp-port/dimens.xml
+++ b/res/values-w600dp-port/dimens.xml
@@ -17,8 +17,11 @@
<resources>
<!-- Dimensions for the customization option tiles -->
<dimen name="option_tile_width">79dp</dimen>
- <dimen name="option_tile_grid_padding_horizontal">8dp</dimen>
+ <dimen name="option_tile_linear_padding_horizontal">8dp</dimen>
+ <dimen name="option_tile_grid_icon_padding_min">8dp</dimen>
+ <dimen name="option_tile_grid_tile_padding_min">4dp</dimen>
- <dimen name="component_color_chip_small_size_default">30dp</dimen>
+ <dimen name="component_color_chip_small_radius_default">30dp</dimen>
+ <dimen name="component_color_chip_small_diameter_default">60dp</dimen>
<dimen name="color_seed_chip_margin">15dp</dimen>
</resources>
diff --git a/res/values-w800dp/dimens.xml b/res/values-w800dp/dimens.xml
index 4cd6242..bdbf7d4 100644
--- a/res/values-w800dp/dimens.xml
+++ b/res/values-w800dp/dimens.xml
@@ -17,5 +17,7 @@
<resources>
<!-- Dimensions for the customization option tiles -->
<dimen name="option_tile_width">87dp</dimen>
- <dimen name="option_tile_grid_padding_horizontal">8dp</dimen>
+ <dimen name="option_tile_linear_padding_horizontal">8dp</dimen>
+ <dimen name="option_tile_grid_icon_padding_min">8dp</dimen>
+ <dimen name="option_tile_grid_tile_padding_min">4dp</dimen>
</resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 225d7b0..3bb0df8 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -38,7 +38,12 @@
<dimen name="option_tile_margin_horizontal">6dp</dimen>
<dimen name="option_tile_padding_vertical">12dp</dimen>
<dimen name="option_tile_padding_horizontal">12dp</dimen>
- <dimen name="option_tile_grid_padding_horizontal">4dp</dimen>
+ <!-- Spacing between tiles in linear layout -->
+ <dimen name="option_tile_linear_padding_horizontal">4dp</dimen>
+ <!-- Minimum padding around tile icon in grid layout -->
+ <dimen name="option_tile_grid_icon_padding_min">8dp</dimen>
+ <!-- Minimum padding around entire tile in grid layout -->
+ <dimen name="option_tile_grid_tile_padding_min">2dp</dimen>
<dimen name="option_icon_size">16dp</dimen>
<dimen name="theme_option_icon_sample_height">22dp</dimen>
<dimen name="theme_option_icon_sample_width">22dp</dimen>
@@ -131,9 +136,8 @@
<!-- For the color page. -->
<dimen name="color_page_indicator_margin_top">16dp</dimen>
- <dimen name="component_color_chip_small_size_default">29dp</dimen>
- <dimen name="color_seed_option_tile_padding">10dp</dimen>
- <dimen name="color_seed_option_tile_padding_selected">6dp</dimen>
+ <dimen name="component_color_chip_small_radius_default">29dp</dimen>
+ <dimen name="component_color_chip_small_diameter_default">58dp</dimen>
<dimen name="color_seed_chip_margin">14dp</dimen>
<!-- Keyguard quick affordances -->
diff --git a/src/com/android/customization/model/color/ColorBundle.java b/src/com/android/customization/model/color/ColorBundle.java
index 2f2df51..d34f3fc 100644
--- a/src/com/android/customization/model/color/ColorBundle.java
+++ b/src/com/android/customization/model/color/ColorBundle.java
@@ -55,15 +55,11 @@
Resources res = view.getContext().getResources();
int primaryColor = mPreviewInfo.resolvePrimaryColor(res);
int secondaryColor = mPreviewInfo.resolveSecondaryColor(res);
- int padding = view.isActivated()
- ? res.getDimensionPixelSize(R.dimen.color_seed_option_tile_padding_selected)
- : res.getDimensionPixelSize(R.dimen.color_seed_option_tile_padding);
for (int i = 0; i < mPreviewColorIds.length; i++) {
ImageView colorPreviewImageView = view.findViewById(mPreviewColorIds[i]);
int color = i % 2 == 0 ? primaryColor : secondaryColor;
colorPreviewImageView.getDrawable().setColorFilter(color, PorterDuff.Mode.SRC);
- colorPreviewImageView.setPadding(padding, padding, padding, padding);
}
view.setContentDescription(getContentDescription(view.getContext()));
}
diff --git a/src/com/android/customization/model/color/ColorSeedOption.java b/src/com/android/customization/model/color/ColorSeedOption.java
index 7bddcb0..53d3954 100644
--- a/src/com/android/customization/model/color/ColorSeedOption.java
+++ b/src/com/android/customization/model/color/ColorSeedOption.java
@@ -71,13 +71,9 @@
Resources res = view.getContext().getResources();
@ColorInt int[] colors = mPreviewInfo.resolveColors(res);
- int padding = view.isActivated()
- ? res.getDimensionPixelSize(R.dimen.color_seed_option_tile_padding_selected)
- : res.getDimensionPixelSize(R.dimen.color_seed_option_tile_padding);
for (int i = 0; i < mPreviewColorIds.length; i++) {
ImageView colorPreviewImageView = view.findViewById(mPreviewColorIds[i]);
colorPreviewImageView.getDrawable().setColorFilter(colors[i], Mode.SRC);
- colorPreviewImageView.setPadding(padding, padding, padding, padding);
}
view.setContentDescription(getContentDescription(view.getContext()));
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index 95924fa..8805caf 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -44,8 +44,6 @@
import com.android.customization.model.CustomizationManager;
import com.android.customization.model.CustomizationOption;
import com.android.wallpaper.R;
-import com.android.wallpaper.widget.GridPaddingDecoration;
-import com.android.wallpaper.widget.GridRowSpacerDecoration;
import java.util.HashSet;
import java.util.List;
@@ -285,37 +283,19 @@
Resources res = mContainer.getContext().getResources();
mContainer.setAdapter(mAdapter);
- final int padding = res.getDimensionPixelSize(
- R.dimen.option_tile_grid_padding_horizontal);
- final int fixWidth = res.getDimensionPixelSize(R.dimen.options_container_width);
final DisplayMetrics metrics = new DisplayMetrics();
mContainer.getContext().getSystemService(WindowManager.class)
.getDefaultDisplay().getMetrics(metrics);
final boolean hasDecoration = mContainer.getItemDecorationCount() != 0;
if (mUseGrid) {
- // This is based on the assumption that the parent view is the same width as the screen.
- final int availableDynamicWidth = metrics.widthPixels - 2 * res.getDimensionPixelSize(
- R.dimen.section_horizontal_padding);
- final int availableWidth = (fixWidth != 0) ? fixWidth : availableDynamicWidth;
int numColumns = res.getInteger(R.integer.options_grid_num_columns);
GridLayoutManager gridLayoutManager = new GridLayoutManager(mContainer.getContext(),
numColumns);
mContainer.setLayoutManager(gridLayoutManager);
- if (!hasDecoration) {
- mContainer.addItemDecoration(new GridPaddingDecoration(padding, 0));
- }
- // Measure RecyclerView to get to the total amount of space used by all options.
- mContainer.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
- while (mContainer.getMeasuredWidth() > availableWidth && numColumns > 1) {
- numColumns -= 1;
- gridLayoutManager.setSpanCount(numColumns);
- mContainer.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
- }
- if (!hasDecoration && numColumns > 1) {
- mContainer.addItemDecoration(new GridRowSpacerDecoration(2 * padding));
- }
} else {
+ final int padding = res.getDimensionPixelSize(
+ R.dimen.option_tile_linear_padding_horizontal);
final int widthPerItem = res.getDimensionPixelSize(R.dimen.option_tile_width) + (
hasDecoration ? 0 : 2 * padding);
mContainer.setLayoutManager(new LinearLayoutManager(mContainer.getContext(),