diff options
24 files changed, 120 insertions, 43 deletions
diff --git a/res/color/option_border_color.xml b/res/color/option_border_color.xml index ea5f189e..ec5ab977 100644 --- a/res/color/option_border_color.xml +++ b/res/color/option_border_color.xml @@ -23,5 +23,6 @@ android:alpha="0.24" android:color="?android:colorAccent" /> <item - android:color="@color/material_grey500"/> + android:alpha="0.05" + android:color="@color/option_border_default"/> </selector> diff --git a/res/drawable/color_chip_hollow.xml b/res/drawable/color_chip_hollow.xml index 76ab6b86..c0eab74a 100644 --- a/res/drawable/color_chip_hollow.xml +++ b/res/drawable/color_chip_hollow.xml @@ -17,8 +17,8 @@ --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" - android:innerRadius="13dp" - android:thickness="8dp" + android:innerRadius="10dp" + android:thickness="6dp" android:useLevel="false"> <solid android:color="@android:color/black"/> </shape> diff --git a/res/drawable/ic_colorize_24px.xml b/res/drawable/ic_colorize_24px.xml index fb70972b..8363683f 100644 --- a/res/drawable/ic_colorize_24px.xml +++ b/res/drawable/ic_colorize_24px.xml @@ -14,8 +14,8 @@ limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="32dp" + android:height="32dp" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/res/drawable/ic_font.xml b/res/drawable/ic_font.xml index f5df7ba5..6ce8308a 100644 --- a/res/drawable/ic_font.xml +++ b/res/drawable/ic_font.xml @@ -14,8 +14,8 @@ limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="32dp" + android:height="32dp" android:viewportWidth="24" android:viewportHeight="24"> <!-- This path represents a square with rounded corners --> diff --git a/res/drawable/ic_nav_wallpaper.xml b/res/drawable/ic_nav_wallpaper.xml index c9356662..a884a44a 100644 --- a/res/drawable/ic_nav_wallpaper.xml +++ b/res/drawable/ic_nav_wallpaper.xml @@ -15,8 +15,8 @@ --> <!-- Represents the wallpaper icon (a "landscape" shape in a box) --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="32dp" + android:height="32dp" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/res/drawable/ic_shapes_24px.xml b/res/drawable/ic_shapes_24px.xml index 525f7572..6debc533 100644 --- a/res/drawable/ic_shapes_24px.xml +++ b/res/drawable/ic_shapes_24px.xml @@ -14,8 +14,8 @@ limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="32dp" + android:height="32dp" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/res/drawable/ic_wifi_24px.xml b/res/drawable/ic_wifi_24px.xml index 0e27c576..64834e0b 100644 --- a/res/drawable/ic_wifi_24px.xml +++ b/res/drawable/ic_wifi_24px.xml @@ -14,8 +14,8 @@ limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="32dp" + android:height="32dp" android:viewportWidth="24" android:viewportHeight="24"> <path diff --git a/res/layout/fragment_custom_theme_component.xml b/res/layout/fragment_custom_theme_component.xml index 314480f1..fb9c36cb 100644 --- a/res/layout/fragment_custom_theme_component.xml +++ b/res/layout/fragment_custom_theme_component.xml @@ -36,7 +36,6 @@ app:layout_constraintBottom_toTopOf="@+id/guideline" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_max="@dimen/preview_pager_max_height" - app:layout_constraintHeight_min="@dimen/preview_pager_min_height" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -47,9 +46,9 @@ layout="@layout/theme_component_preview" android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_gravity="center_vertical" android:layout_marginHorizontal="@dimen/preview_page_horizontal_margin" - android:layout_marginTop="@dimen/preview_page_top_margin" - android:layout_marginBottom="@dimen/indicator_container_height"/> + android:layout_marginTop="@dimen/preview_page_top_margin"/> </FrameLayout> <View android:id="@+id/divider" @@ -81,7 +80,9 @@ android:textSize="@dimen/component_options_title_size" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/guideline"/> + app:layout_constraintTop_toBottomOf="@+id/component_preview_container" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintVertical_bias=".15"/> <androidx.recyclerview.widget.RecyclerView android:id="@+id/options_container" @@ -93,7 +94,7 @@ app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/component_options_title" - app:layout_constraintVertical_bias=".2"/> + app:layout_constraintVertical_bias=".25"/> </androidx.constraintlayout.widget.ConstraintLayout> </LinearLayout> diff --git a/res/layout/fragment_custom_theme_name.xml b/res/layout/fragment_custom_theme_name.xml index 9ac0b213..6a3d1bab 100644 --- a/res/layout/fragment_custom_theme_name.xml +++ b/res/layout/fragment_custom_theme_name.xml @@ -36,7 +36,6 @@ app:layout_constraintBottom_toTopOf="@+id/guideline" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_max="@dimen/preview_pager_max_height" - app:layout_constraintHeight_min="@dimen/preview_pager_min_height" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -69,9 +68,12 @@ android:layout_marginBottom="10dp" android:textAlignment="center" android:textAppearance="@style/HeaderTextAppearance" + android:textSize="@dimen/component_options_title_size" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/guideline"/> + app:layout_constraintTop_toBottomOf="@+id/component_preview_container" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintVertical_bias=".15"/> <EditText android:id="@+id/custom_theme_name" @@ -85,7 +87,7 @@ app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/component_options_title" - app:layout_constraintVertical_bias=".2"/> + app:layout_constraintVertical_bias=".25"/> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/res/layout/fragment_theme_picker.xml b/res/layout/fragment_theme_picker.xml index d38e67f8..8272bdeb 100644 --- a/res/layout/fragment_theme_picker.xml +++ b/res/layout/fragment_theme_picker.xml @@ -41,7 +41,6 @@ app:layout_constraintBottom_toTopOf="@id/options_container" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_max="@dimen/preview_pager_max_height" - app:layout_constraintHeight_min="@dimen/preview_pager_min_height" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0" diff --git a/res/layout/preview_card_font_content.xml b/res/layout/preview_card_font_content.xml index 2a27b013..fb7879e7 100644 --- a/res/layout/preview_card_font_content.xml +++ b/res/layout/preview_card_font_content.xml @@ -20,26 +20,39 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" - android:gravity="center_horizontal" + android:weightSum="7" android:orientation="vertical" tools:showIn="@layout/theme_preview_card"> <TextView style="@style/FontCardTitleStyle" android:id="@+id/font_card_title" android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_height="16sp" + android:layout_weight="1.5" + android:layout_gravity="center" android:gravity="center_horizontal" + android:maxLines="1" android:text="@string/font_card_title"/> + <Space + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="0"/> <View android:id="@+id/font_card_divider" android:layout_width="15dp" android:layout_height="2dp" - android:layout_marginVertical="@dimen/font_preview_divider_gap" + android:layout_gravity="center" android:background="?android:colorAccent"/> + <Space + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1"/> <TextView style="@style/FontCardBodyTextStyle" android:id="@+id/font_card_body" - android:layout_height="wrap_content" + android:layout_height="56sp" + android:layout_weight="2" + android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" android:text="@string/font_card_body"/> </LinearLayout>
\ No newline at end of file diff --git a/res/layout/theme_color_option.xml b/res/layout/theme_color_option.xml index 72acd8be..12fe623f 100644 --- a/res/layout/theme_color_option.xml +++ b/res/layout/theme_color_option.xml @@ -18,7 +18,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" - android:padding="4dp"> + android:padding="8dp"> <ImageView android:id="@+id/option_tile" diff --git a/res/layout/theme_component_preview.xml b/res/layout/theme_component_preview.xml index 0d01e051..fe2f6913 100644 --- a/res/layout/theme_component_preview.xml +++ b/res/layout/theme_component_preview.xml @@ -23,6 +23,7 @@ android:id="@+id/theme_preview_card_background" android:layout_width="match_parent" android:layout_height="match_parent" + android:clipToPadding="false" android:maxHeight="@dimen/preview_theme_max_height" android:minHeight="@dimen/preview_theme_min_height" android:paddingHorizontal="@dimen/preview_card_padding" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 6ebf0165..47b3b8ba 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -47,7 +47,7 @@ <string name="apply_theme_error_msg" msgid="791364062636538317">"No se ha podido aplicar el estilo"</string> <string name="custom_theme_next" msgid="6235420097213197301">"Siguiente"</string> <string name="custom_theme_previous" msgid="4941132112640503022">"Anterior"</string> - <string name="custom_theme_title" msgid="2192300350332693631">"<xliff:g id="ID_1">%1$d</xliff:g> personalizado"</string> + <string name="custom_theme_title" msgid="2192300350332693631">"Personalizado <xliff:g id="ID_1">%1$d</xliff:g>"</string> <string name="custom_theme_fragment_title" msgid="6615547284702040280">"Estilo personal"</string> <string name="custom_theme_delete" msgid="4744494663184126202">"Eliminar"</string> <string name="font_component_title" msgid="8800340833695292049">"Elegir fuente"</string> diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml index 129d3642..b567d0d0 100644 --- a/res/values-night/colors.xml +++ b/res/values-night/colors.xml @@ -28,6 +28,8 @@ <color name="tile_disabled_icon_color">@color/light_grey</color> <color name="tile_disabled_background_color">#353535</color> + <color name="shape_option_tile_foreground_color">@color/edit_background_base</color> + <color name="tip_dot_color">#81C995</color> <color name="tip_dot_line_color">#000000</color> diff --git a/res/values/colors.xml b/res/values/colors.xml index 42335bf0..3d646f94 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -30,6 +30,8 @@ <color name="shape_thumbnail_color">#b2b2b2</color> <color name="icon_thumbnail_color">@color/black_87_alpha</color> + <color name="option_border_default">@color/edit_background_base</color> + <color name="clockface_preview_background">@android:color/black</color> <color name="theme_preview_icon_color">@color/google_grey700</color> @@ -47,7 +49,7 @@ <color name="tile_disabled_icon_color">#2d2d2d</color> <color name="tile_disabled_background_color">@color/light_grey</color> - <color name="shape_option_tile_foreground_color">#f8f9fa</color> + <color name="shape_option_tile_foreground_color">@color/edit_background_base</color> <color name="tip_dot_color">#34A853</color> <color name="tip_dot_line_color">#FFFFFF</color> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 00b2bed7..5c98fda2 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -85,7 +85,7 @@ <dimen name="preview_theme_cover_content_bottom">@dimen/preview_theme_content_bottom</dimen> <dimen name="font_preview_body_width">200dp</dimen> - <dimen name="font_preview_divider_gap">30dp</dimen> + <dimen name="font_preview_divider_gap">24dp</dimen> <dimen name="custom_theme_nav_height">56dp</dimen> @@ -94,7 +94,7 @@ <dimen name="component_icon_thumb_size">40dp</dimen> - <dimen name="component_color_chip_size">42dp</dimen> + <dimen name="component_color_chip_size">32dp</dimen> <dimen name="component_shape_thumb_size">72dp</dimen> <dimen name="option_border_width">2dp</dimen> diff --git a/res/values/styles.xml b/res/values/styles.xml index dd8e18dc..1289a87d 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -44,7 +44,7 @@ <style name="BottomNavStyle"> <item name="itemIconTint">@color/bottom_nav_item_color</item> <item name="itemTextColor">@color/bottom_nav_item_color</item> - <item name="itemTextAppearanceActive">@style/BottomNavTextAppearance</item> + <item name="itemTextAppearanceActive">@style/BottomNavTextAppearanceActive</item> <item name="itemTextAppearanceInactive">@style/BottomNavTextAppearance</item> <item name="itemBackground">?android:attr/selectableItemBackgroundBorderless</item> <item name="android:background">?android:colorPrimary</item> @@ -54,6 +54,10 @@ <item name="android:textSize">@dimen/bottom_navbar_font_text_size</item> </style> + <style name="BottomNavTextAppearanceActive" parent="BottomNavTextAppearance"> + <item name="android:textStyle">bold</item> + </style> + <!-- Common components and widgets --> <style name="HeaderTextAppearance" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"/> diff --git a/src/com/android/customization/model/clock/ClockManager.java b/src/com/android/customization/model/clock/ClockManager.java index 3744317e..4e77a494 100644 --- a/src/com/android/customization/model/clock/ClockManager.java +++ b/src/com/android/customization/model/clock/ClockManager.java @@ -17,9 +17,13 @@ package com.android.customization.model.clock; import android.content.ContentResolver; import android.provider.Settings.Secure; +import android.text.TextUtils; import com.android.customization.module.ThemesUserEventLogger; +import org.json.JSONException; +import org.json.JSONObject; + /** * {@link CustomizationManager} for clock faces that implements apply by writing to secure settings. */ @@ -27,6 +31,8 @@ public class ClockManager extends BaseClockManager { // TODO: use constant from Settings.Secure static final String CLOCK_FACE_SETTING = "lock_screen_custom_clock_face"; + private static final String CLOCK_FIELD = "clock"; + private static final String TIMESTAMP_FIELD = "_applied_timestamp"; private final ContentResolver mContentResolver; private final ThemesUserEventLogger mEventLogger; @@ -39,7 +45,15 @@ public class ClockManager extends BaseClockManager { @Override protected void handleApply(Clockface option, Callback callback) { - boolean stored = Secure.putString(mContentResolver, CLOCK_FACE_SETTING, option.getId()); + boolean stored; + try { + final JSONObject json = new JSONObject(); + json.put(CLOCK_FIELD, option.getId()); + json.put(TIMESTAMP_FIELD, System.currentTimeMillis()); + stored = Secure.putString(mContentResolver, CLOCK_FACE_SETTING, json.toString()); + } catch (JSONException ex) { + stored = false; + } if (stored) { mEventLogger.logClockApplied(option); callback.onSuccess(); @@ -50,6 +64,15 @@ public class ClockManager extends BaseClockManager { @Override protected String lookUpCurrentClock() { - return Secure.getString(mContentResolver, CLOCK_FACE_SETTING); + final String value = Secure.getString(mContentResolver, CLOCK_FACE_SETTING); + if (TextUtils.isEmpty(value)) { + return value; + } + try { + final JSONObject json = new JSONObject(value); + return json.getString(CLOCK_FIELD); + } catch (JSONException ex) { + return value; + } } } diff --git a/src/com/android/customization/model/theme/custom/ThemeComponentOption.java b/src/com/android/customization/model/theme/custom/ThemeComponentOption.java index 78131cc9..ff8da087 100644 --- a/src/com/android/customization/model/theme/custom/ThemeComponentOption.java +++ b/src/com/android/customization/model/theme/custom/ThemeComponentOption.java @@ -29,6 +29,7 @@ import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources.Theme; +import android.content.res.TypedArray; import android.graphics.Path; import android.graphics.Typeface; import android.graphics.drawable.Drawable; @@ -49,6 +50,7 @@ import androidx.annotation.Dimension; import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import androidx.core.graphics.ColorUtils; import com.android.customization.model.CustomizationManager; import com.android.customization.model.CustomizationOption; @@ -146,6 +148,8 @@ public abstract class ThemeComponentOption implements CustomizationOption<ThemeC title.setTypeface(mHeadlineFont); TextView bodyText = container.findViewById(R.id.font_card_body); bodyText.setTypeface(mBodyFont); + container.findViewById(R.id.font_card_divider).setBackgroundColor( + title.getCurrentTextColor()); } @Override @@ -441,7 +445,13 @@ public abstract class ThemeComponentOption implements CustomizationOption<ThemeC foreground.setIntrinsicHeight(background.getIntrinsicHeight() - borderWidth); foreground.setIntrinsicWidth(background.getIntrinsicWidth() - borderWidth); - foreground.setTint(res.getColor(R.color.shape_option_tile_foreground_color, theme)); + TypedArray ta = view.getContext().obtainStyledAttributes( + new int[]{android.R.attr.colorPrimary}); + int primaryColor = ta.getColor(0, 0); + ta.recycle(); + int foregroundColor = res.getColor(R.color.shape_option_tile_foreground_color, theme); + + foreground.setTint(ColorUtils.blendARGB(primaryColor, foregroundColor, .05f)); thumb.setImageDrawable(mShape); view.setContentDescription(mLabel); diff --git a/src/com/android/customization/module/StatsLogUserEventLogger.java b/src/com/android/customization/module/StatsLogUserEventLogger.java index 07d8c1df..b77d7dc7 100644 --- a/src/com/android/customization/module/StatsLogUserEventLogger.java +++ b/src/com/android/customization/module/StatsLogUserEventLogger.java @@ -41,7 +41,7 @@ public class StatsLogUserEventLogger extends NoOpUserEventLogger implements Them private static final String TAG = "StatsLogUserEventLogger"; @Override - public void logResumed() { + public void logResumed(boolean provisioned, boolean wallpaper) { StatsLogCompat.write(StyleEnums.ONRESUME, 0, 0, 0, 0, 0, 0, 0, 0, 0); } diff --git a/src/com/android/customization/picker/ClockFacePickerActivity.java b/src/com/android/customization/picker/ClockFacePickerActivity.java index bfe2e5ed..5065aef4 100644 --- a/src/com/android/customization/picker/ClockFacePickerActivity.java +++ b/src/com/android/customization/picker/ClockFacePickerActivity.java @@ -64,12 +64,16 @@ public class ClockFacePickerActivity extends FragmentActivity implements ClockFr return getIntent().getStringExtra(EXTRA_CLOCK_FACE_NAME); } }; - - final FragmentManager fm = getSupportFragmentManager(); - final FragmentTransaction fragmentTransaction = fm.beginTransaction(); - final ClockFragment clockFragment = ClockFragment.newInstance(getString(R.string.clock_title)); - fragmentTransaction.replace(R.id.fragment_container, clockFragment); - fragmentTransaction.commitNow(); + if (!mClockManager.isAvailable()) { + finish(); + } else { + final FragmentManager fm = getSupportFragmentManager(); + final FragmentTransaction fragmentTransaction = fm.beginTransaction(); + final ClockFragment clockFragment = ClockFragment.newInstance( + getString(R.string.clock_title)); + fragmentTransaction.replace(R.id.fragment_container, clockFragment); + fragmentTransaction.commitNow(); + } } @Override diff --git a/src/com/android/customization/picker/CustomizationPickerActivity.java b/src/com/android/customization/picker/CustomizationPickerActivity.java index 3f782988..80cd7d93 100644 --- a/src/com/android/customization/picker/CustomizationPickerActivity.java +++ b/src/com/android/customization/picker/CustomizationPickerActivity.java @@ -20,6 +20,7 @@ import android.content.Intent; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.os.Bundle; +import android.provider.Settings; import android.util.Log; import android.view.Gravity; import android.view.Menu; @@ -138,7 +139,12 @@ public class CustomizationPickerActivity extends FragmentActivity implements Wal @Override protected void onResume() { super.onResume(); - mUserEventLogger.logResumed(); + boolean wallpaperOnly = + WALLPAPER_ONLY.equals(getIntent().getStringExtra(WALLPAPER_FLAVOR_EXTRA)); + boolean provisioned = Settings.Global.getInt(getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 0) != 0; + + mUserEventLogger.logResumed(provisioned, wallpaperOnly); // refresh the sections as the preview may have changed initSections(); if (mBottomNav == null) { diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java index cb78ea6d..f584dec9 100644 --- a/src/com/android/customization/picker/theme/ThemeFragment.java +++ b/src/com/android/customization/picker/theme/ThemeFragment.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; @@ -568,7 +569,15 @@ public class ThemeFragment extends ToolbarFragment { } view.findViewById(R.id.theme_preview_card_background).setBackground(background); if (mScrim == null && !mIsTranslucent) { + boolean shouldRecycle = false; + if (bitmap.getConfig() == Config.HARDWARE) { + bitmap = bitmap.copy(Config.ARGB_8888, false); + shouldRecycle = true; + } int colorsHint = WallpaperColors.fromBitmap(bitmap).getColorHints(); + if (shouldRecycle) { + bitmap.recycle(); + } TextView header = view.findViewById(R.id.theme_preview_card_header); if ((colorsHint & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0) { int colorLight = res.getColor(R.color.text_color_light, null); |