diff options
author | Setup Wizard Team <android-setup-team-eng@google.com> | 2022-03-04 18:28:41 +0800 |
---|---|---|
committer | pastychang <pastychang@google.com> | 2022-03-09 20:06:07 +0800 |
commit | 84983c34f8a9982d416fa495cade79c6282c6722 (patch) | |
tree | 6c966a1b5436fc3236c794765d3556bba0e39d09 | |
parent | c7210e4275d1da3767d2939d75ea898903820279 (diff) | |
download | setupdesign-84983c34f8a9982d416fa495cade79c6282c6722.tar.gz |
Import updated Android Setupdesign Library 432397943
Copied from google3/third_party/java_src/android_libs/setupdesign
Test: mm
Included changes:
- 432397943 Edge to Edge, eliminate the navigation bar divider.
- 432341362 Make the loadinglayout header height match parent in land...
- 432061547 Fix the wrong padding top on landscape loading screen
- 431614278 Updates the new color scheme
- 430955940 Rollin the header section support again(cl/430632447) and...
- 430906695 Automated g4 rollback of changelist 430632447.
- 430646242 Fix card view fit layout in fullscreen mode
- 430632447 [SetupDesign] update default value for Glifv4 - header se...
- 429495738 migrate some material style to Glifv4 theme.
- 428987926 Update the edit box corner radius.
- 428716981 Add a partnerconfig for loading animation finished.
- 428618706 Cloned CL/423965608
- 428389234 Update targetSdkVersion to 32 of unit tests
- 423478198 Add the sudDividerShown in recycler mixin.
- 422744910 [Tablet] Add default values of GlifLayout into setupdesig...
- 422734768 Add target api check for android attribute.
PiperOrigin-RevId: 432397943
Change-Id: I700a6b49ac4f2830833dc8f7364beb9f72c3b4a0
20 files changed, 305 insertions, 71 deletions
diff --git a/exempting_lint_checks.txt b/exempting_lint_checks.txt index b6d4d30..949488a 100644 --- a/exempting_lint_checks.txt +++ b/exempting_lint_checks.txt @@ -63,3 +63,29 @@ third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupd third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/RichTextView.java: DiscouragedApi: .getIdentifier(textAppearance, "style", context.getPackageName()); third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/StickyHeaderListView.java: CustomViewStyleable: .obtainStyledAttributes(attrs, R.styleable.SudStickyHeaderListView, defStyleAttr, 0); third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/StickyHeaderScrollView.java: ObsoleteSdkInt: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/GlifLayout.java: CustomViewStyleable: getContext().obtainStyledAttributes(attrs, R.styleable.SudGlifLayout, defStyleAttr, 0); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/GlifLayout.java: NewApi: LayoutStyler.applyPartnerCustomizationExtraPaddingStyle(view); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/GlifLayout.java: NewApi: tryApplyPartnerCustomizationContentPaddingTopStyle(view); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/GlifListLayout.java: NewApi: tryApplyPartnerCustomizationContentPaddingTopStyle(view); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java: NewApi: tryApplyPartnerCustomizationContentPaddingTopStyle(view); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/SetupWizardLayout.java: CustomViewStyleable: .obtainStyledAttributes(attrs, R.styleable.SudSetupWizardLayout, defStyleAttr, 0); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/items/ExpandableSwitchItem.java: NewApi: LayoutStyler.applyPartnerCustomizationLayoutPaddingStyle(content); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/items/Item.java: NewApi: ItemStyler.applyPartnerCustomizationItemStyle(view); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/items/Item.java: NewApi: LayoutStyler.applyPartnerCustomizationLayoutPaddingStyle(view); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/items/RecyclerItemAdapter.java: NotifyDataSetChanged: notifyDataSetChanged(); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/template/HeaderMixin.java: NewApi: LayoutStyler.applyPartnerCustomizationExtraPaddingStyle(headerAreaView); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/util/Partner.java: DiscouragedApi: return resources.getIdentifier(name, defType, packageName); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java: NewApi: ((RichTextView) textView).setSpanTypeface(linkFont); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/FillContentLayout.java: CustomViewStyleable: context.obtainStyledAttributes(attrs, R.styleable.SudFillContentLayout, defStyleAttr, 0); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/HeaderRecyclerView.java: CustomViewStyleable: .obtainStyledAttributes(attrs, R.styleable.SudHeaderRecyclerView, defStyleAttr, 0); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/HeaderRecyclerView.java: NotifyDataSetChanged: notifyDataSetChanged(); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/IconUniformityAppImageView.java: AnnotateVersionCheck: private static final boolean ON_L_PLUS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/Illustration.java: CustomViewStyleable: getContext().obtainStyledAttributes(attrs, R.styleable.SudIllustration, defStyleAttr, 0); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/IllustrationVideoView.java: CustomViewStyleable: context.obtainStyledAttributes(attrs, R.styleable.SudIllustrationVideoView); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java: CustomViewStyleable: attrs, R.styleable.SudIntrinsicSizeFrameLayout, defStyleAttr, 0); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/NavigationBar.java: ResourceType: @StyleableRes int colorBackground = 2; +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/NavigationBar.java: ResourceType: @StyleableRes int colorForeground = 1; +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/RichTextView.java: DiscouragedApi: .getIdentifier(textAppearance, "style", context.getPackageName()); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/RichTextView.java: NewApi: text = getRichText(getContext(), text); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/StickyHeaderListView.java: CustomViewStyleable: .obtainStyledAttributes(attrs, R.styleable.SudStickyHeaderListView, defStyleAttr, 0); +third_party/java_src/android_libs/setupdesign/main/src/com/google/android/setupdesign/view/StickyHeaderScrollView.java: ObsoleteSdkInt: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { diff --git a/lottie_loading_layout/AndroidManifest.xml b/lottie_loading_layout/AndroidManifest.xml index 67c363d..3053930 100644 --- a/lottie_loading_layout/AndroidManifest.xml +++ b/lottie_loading_layout/AndroidManifest.xml @@ -20,6 +20,6 @@ <uses-sdk android:minSdkVersion="14" - android:targetSdkVersion="31" /> + android:targetSdkVersion="32" /> </manifest> diff --git a/lottie_loading_layout/res/layout-land-v31/sud_glif_loading_template_content.xml b/lottie_loading_layout/res/layout-land-v31/sud_glif_loading_template_content.xml index 4473c52..ef0ba71 100644 --- a/lottie_loading_layout/res/layout-land-v31/sud_glif_loading_template_content.xml +++ b/lottie_loading_layout/res/layout-land-v31/sud_glif_loading_template_content.xml @@ -57,12 +57,12 @@ <LinearLayout android:id="@+id/sud_landscape_content_area" style="@style/SudLandContentContianerStyle" - android:paddingTop="?attr/sudGlifContentPaddingTop" android:focusedByDefault="false" android:orientation="vertical"> <FrameLayout android:id="@+id/sud_layout_loading_content" + android:paddingTop="?attr/sudGlifContentPaddingTop" android:layout_width="match_parent" android:layout_height="match_parent"> diff --git a/lottie_loading_layout/src/com/google/android/setupdesign/GlifLoadingLayout.java b/lottie_loading_layout/src/com/google/android/setupdesign/GlifLoadingLayout.java index 7874b75..db0b1f3 100644 --- a/lottie_loading_layout/src/com/google/android/setupdesign/GlifLoadingLayout.java +++ b/lottie_loading_layout/src/com/google/android/setupdesign/GlifLoadingLayout.java @@ -24,6 +24,7 @@ import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.ColorFilter; @@ -60,8 +61,8 @@ import com.google.android.setupcompat.partnerconfig.ResourceEntry; import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.util.BuildCompatUtils; import com.google.android.setupdesign.lottieloadinglayout.R; -import com.google.android.setupdesign.view.IllustrationVideoView; import com.google.android.setupdesign.util.LayoutStyler; +import com.google.android.setupdesign.view.IllustrationVideoView; import java.io.InputStream; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -391,9 +392,11 @@ public class GlifLoadingLayout extends GlifLayout { private void updateHeaderHeight() { View headerView = findManagedViewById(R.id.sud_header_scroll_view); + Configuration currentConfig = getResources().getConfiguration(); if (headerView != null && PartnerConfigHelper.get(getContext()) - .isPartnerConfigAvailable(PartnerConfig.CONFIG_LOADING_LAYOUT_HEADER_HEIGHT)) { + .isPartnerConfigAvailable(PartnerConfig.CONFIG_LOADING_LAYOUT_HEADER_HEIGHT) + && currentConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) { float configHeaderHeight = PartnerConfigHelper.get(getContext()) .getDimension(getContext(), PartnerConfig.CONFIG_LOADING_LAYOUT_HEADER_HEIGHT); @@ -853,10 +856,17 @@ public class GlifLoadingLayout extends GlifLayout { this.runnable = runnable; this.lottieAnimationView = glifLoadingLayout.findLottieAnimationView(); + boolean shouldAnimationBeFinished = + PartnerConfigHelper.get(glifLoadingLayout.getContext()) + .getBoolean( + glifLoadingLayout.getContext(), + PartnerConfig.CONFIG_LOADING_LAYOUT_WAIT_FOR_ANIMATION_FINISHED, + true); // TODO: add test case for verify the case which isAnimating returns true. if (glifLoadingLayout.isLottieLayoutVisible() && lottieAnimationView.isAnimating() - && !isZeroAnimatorDurationScale()) { + && !isZeroAnimatorDurationScale() + && shouldAnimationBeFinished) { Log.i(TAG, "Register animation finish."); lottieAnimationView.addAnimatorListener(animatorListener); lottieAnimationView.setRepeatCount(0); diff --git a/main/res/layout/sud_glif_header.xml b/main/res/layout/sud_glif_header.xml index 1bbde55..70b8daa 100644 --- a/main/res/layout/sud_glif_header.xml +++ b/main/res/layout/sud_glif_header.xml @@ -31,20 +31,15 @@ <ImageView android:id="@+id/sud_layout_icon" style="?attr/sudGlifIconStyle" - android:layout_marginLeft="0dp" - android:layout_marginRight="0dp" - android:layout_marginTop="0dp" - android:layout_marginBottom="0dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@null" - android:layout_gravity="?attr/sudGlifHeaderGravity" android:visibility="gone" /> </FrameLayout> <TextView android:id="@+id/suc_layout_title" - style="@style/SudGlifHeaderTitle" + style="?attr/sudGlifHeaderTitleStyle" android:layout_width="match_parent" android:layout_height="wrap_content" /> @@ -61,7 +56,7 @@ <com.google.android.setupdesign.view.RichTextView android:id="@+id/sud_layout_subtitle" - style="@style/SudGlifDescription" + style="?attr/sudGlifDescriptionStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" /> diff --git a/main/res/values-land/dimens.xml b/main/res/values-land/dimens.xml index 49ed20d..dfdc5b2 100644 --- a/main/res/values-land/dimens.xml +++ b/main/res/values-land/dimens.xml @@ -45,4 +45,8 @@ <dimen name="sud_content_loading_frame_padding_end">0dp</dimen> <dimen name="sud_content_loading_frame_padding_bottom">24dp</dimen> + <!-- Page Margins Material You --> + <dimen name="sud_glif_margin_start_material_you">32dp</dimen> + <dimen name="sud_glif_margin_end_material_you">32dp</dimen> + </resources> diff --git a/main/res/values-night-v31/colors.xml b/main/res/values-night-v31/colors.xml index f929595..76e2b2b 100644 --- a/main/res/values-night-v31/colors.xml +++ b/main/res/values-night-v31/colors.xml @@ -20,14 +20,15 @@ <color name="sud_dynamic_color_accent_glif_v3">@color/sud_dynamic_color_accent_glif_v3_dark</color> - <color name="sud_system_primary_text">@color/sud_system_neutral1_50</color> - <color name="sud_system_secondary_text">@color/sud_system_neutral2_200</color> - <color name="sud_system_tertiary_text_inactive">@color/sud_system_neutral2_400</color> + <color name="sud_system_primary_text">@color/sud_system_neutral1_0</color> + <color name="sud_system_secondary_text">@color/sud_system_neutral1_200</color> + <color name="sud_system_tertiary_text_inactive">@color/sud_system_neutral1_300</color> <color name="sud_system_error_warning">@color/sud_error_warning_default_dark</color> - <color name="sud_system_background_surface">@color/sud_system_neutral1_900</color> + <color name="sud_system_background_surface">@color/sud_system_neutral1_1000</color> <color name="sud_system_accent_icon_text_button">@color/sud_system_accent1_100</color> <color name="sud_system_button_surface">@color/sud_system_accent1_100</color> <color name="sud_system_button_text">@color/sud_system_neutral1_900</color> - <color name="sud_system_dividing_line">@color/sud_system_neutral2_300</color> + <color name="sud_system_dividing_line">@color/sud_system_neutral1_600</color> + <color name="sud_system_hyperlink_text">@color/sud_system_accent1_300</color> </resources>
\ No newline at end of file diff --git a/main/res/values-sw600dp-land/dimens.xml b/main/res/values-sw600dp-land/dimens.xml index d68c884..b9bae55 100644 --- a/main/res/values-sw600dp-land/dimens.xml +++ b/main/res/values-sw600dp-land/dimens.xml @@ -23,4 +23,8 @@ <!-- Illustration --> <item name="sud_illustration_aspect_ratio" format="float" type="dimen">0.0</item> + <!-- Page Margins Material You --> + <dimen name="sud_glif_margin_start_material_you">48dp</dimen> + <dimen name="sud_glif_margin_end_material_you">48dp</dimen> + </resources> diff --git a/main/res/values-sw600dp-v31/dimens.xml b/main/res/values-sw600dp-v31/dimens.xml index f3f3aba..556b872 100644 --- a/main/res/values-sw600dp-v31/dimens.xml +++ b/main/res/values-sw600dp-v31/dimens.xml @@ -26,9 +26,12 @@ <dimen name="sud_glif_footer_padding_start">48dp</dimen> <!-- Calculated by (sud_glif_margin_end - 4dp internal padding of button) --> <dimen name="sud_glif_footer_padding_end">60dp</dimen> - <!-- Default margin start/end should be 96dp in portrait mode for the large screen. However, If - you set this value, you can no longer overwrite a smaller value from partner config. So - here is set to 64dp and rewritten to 96dp through partner config. --> + <!-- Default margins start/end are 96dp in portrait mode for the large screen. However, If here + set this value, it cannot be overwrited by a smaller value from partner config. So here + set to 64dp and rewritten to 96dp through partner config the partner config + "setup_design_layout_margin_start" & "setup_design_layout_margin_end" for glifv3 default + margins. --> + <!-- TODO: b/221404901 to remove this limitation --> <dimen name="sud_glif_margin_start">64dp</dimen> <dimen name="sud_glif_margin_end">64dp</dimen> diff --git a/main/res/values-sw600dp/dimens.xml b/main/res/values-sw600dp/dimens.xml index b7802b1..388507e 100644 --- a/main/res/values-sw600dp/dimens.xml +++ b/main/res/values-sw600dp/dimens.xml @@ -18,10 +18,14 @@ <resources> <!-- General --> + <!-- Calculated by (sud_glif_margin_start - sud_glif_button_padding) --> + <dimen name="sud_glif_button_margin_start">24dp</dimen> <!-- Calculated by (sud_glif_margin_start - 4dp internal padding of button) --> <dimen name="sud_glif_button_margin_end">36dp</dimen> <!-- Calculated by (sud_glif_margin_start - sud_glif_button_padding) --> - <dimen name="sud_glif_button_margin_start">24dp</dimen> + <dimen name="sud_glif_footer_padding_start">24dp</dimen> + <!-- Calculated by (sud_glif_margin_end - 4dp internal padding of button) --> + <dimen name="sud_glif_footer_padding_end">36dp</dimen> <dimen name="sud_glif_margin_start">40dp</dimen> <dimen name="sud_glif_margin_end">40dp</dimen> @@ -38,4 +42,17 @@ <dimen name="sud_items_glif_icon_divider_inset">88dp</dimen> <dimen name="sud_items_glif_text_divider_inset">40dp</dimen> + <!-- Page Margins Material You --> + <!-- Default margins start/end are 120dp in portrait mode for the large screen. However, If here + set this value, it cannot be overwrited by a smaller value from partner config. So here + set to 64dp and rewritten to 120dp through partner config the partner config + "setup_design_layout_margin_start" & "setup_design_layout_margin_end" for glifv4 default + margins. --> + <!-- TODO: b/221404901 to remove this limitation --> + <dimen name="sud_glif_margin_start_material_you">64dp</dimen> + <dimen name="sud_glif_margin_end_material_you">64dp</dimen> + <!-- Header Area Material You --> + <dimen name="sud_glif_header_title_size_material_you">44sp</dimen> + <dimen name="sud_glif_icon_margin_top_material_you">24dp</dimen> + </resources> diff --git a/main/res/values-v31/colors.xml b/main/res/values-v31/colors.xml index 3db968b..07298d1 100644 --- a/main/res/values-v31/colors.xml +++ b/main/res/values-v31/colors.xml @@ -48,14 +48,24 @@ <color name="sud_system_neutral1_50">@android:color/system_neutral1_50</color> + <color name="sud_system_neutral1_200">@android:color/system_neutral1_200</color> + + <color name="sud_system_neutral1_300">@android:color/system_neutral1_300</color> + <color name="sud_system_neutral1_400">@android:color/system_neutral1_400</color> + <color name="sud_system_neutral1_500">@android:color/system_neutral1_500</color> + + <color name="sud_system_neutral1_600">@android:color/system_neutral1_600</color> + <color name="sud_system_neutral1_700">@android:color/system_neutral1_700</color> <color name="sud_system_neutral1_800">@android:color/system_neutral1_800</color> <color name="sud_system_neutral1_900">@android:color/system_neutral1_900</color> + <color name="sud_system_neutral1_1000">@android:color/system_neutral1_1000</color> + <color name="sud_system_neutral2_50">@android:color/system_neutral2_50</color> @@ -74,14 +84,15 @@ <color name="sud_system_primary_text">@color/sud_system_neutral1_900</color> - <color name="sud_system_secondary_text">@color/sud_system_neutral2_700</color> - <color name="sud_system_tertiary_text_inactive">@color/sud_system_neutral2_500</color> + <color name="sud_system_secondary_text">@color/sud_system_neutral1_700</color> + <color name="sud_system_tertiary_text_inactive">@color/sud_system_neutral1_600</color> <color name="sud_system_error_warning">@color/sud_error_warning_default_light</color> - <color name="sud_system_background_surface">@color/sud_system_neutral1_50</color> + <color name="sud_system_background_surface">@color/sud_system_neutral1_0</color> <color name="sud_system_accent_icon_text_button">@color/sud_system_accent1_600</color> - <color name="sud_system_button_surface">@color/sud_system_accent1_100</color> - <color name="sud_system_button_text">@color/sud_system_neutral1_900</color> - <color name="sud_system_dividing_line">@color/sud_system_neutral2_300</color> + <color name="sud_system_button_surface">@color/sud_system_accent1_600</color> + <color name="sud_system_button_text">@color/sud_system_neutral1_50</color> + <color name="sud_system_dividing_line">@color/sud_system_neutral1_500</color> + <color name="sud_system_hyperlink_text">@color/sud_system_accent1_600</color> <color name="sud_dynamic_switch_thumb_off_light">@color/sud_system_neutral2_300</color> diff --git a/main/res/values-v31/styles.xml b/main/res/values-v31/styles.xml index cf98b0b..7e59aa5 100644 --- a/main/res/values-v31/styles.xml +++ b/main/res/values-v31/styles.xml @@ -19,7 +19,7 @@ <!-- Main theme for dynamic color --> <style name="SudDynamicColorTheme"> <item name="colorAccent">@color/sud_dynamic_color_accent_glif_v3_dark</item> - <item name="android:textColorLink">@color/sud_system_accent1_300</item> + <item name="android:textColorLink">@color/sud_system_hyperlink_text</item> <item name="alertDialogTheme">@style/SudDynamicColorAlertDialogThemeCompat</item> <item name="android:datePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme</item> <item name="android:timePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme</item> @@ -33,7 +33,7 @@ <style name="SudDynamicColorTheme.Light"> <item name="colorAccent">@color/sud_dynamic_color_accent_glif_v3_light</item> - <item name="android:textColorLink">@color/sud_system_accent1_600</item> + <item name="android:textColorLink">@color/sud_system_hyperlink_text</item> <item name="alertDialogTheme">@style/SudDynamicColorAlertDialogThemeCompat.Light</item> <item name="android:datePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme.Light</item> <item name="android:timePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme.Light</item> @@ -46,13 +46,13 @@ </style> <style name="SudFullDynamicColorTheme" parent="SudDynamicColorTheme"> - <item name="android:windowBackground">@android:color/system_neutral1_900</item> + <item name="android:windowBackground">@color/sud_system_background_surface</item> <item name="android:colorForeground">@android:color/system_neutral1_50</item> - <item name="android:colorForegroundInverse">@android:color/system_neutral1_900</item> - <item name="android:colorBackground">@android:color/system_neutral1_900</item> - <item name="android:colorBackgroundCacheHint">@android:color/system_neutral1_900</item> - <item name="colorBackgroundFloating">@android:color/system_neutral1_900</item> - <item name="android:navigationBarColor">@android:color/system_neutral1_900</item> + <item name="android:colorForegroundInverse">@color/sud_system_background_surface</item> + <item name="android:colorBackground">@color/sud_system_background_surface</item> + <item name="android:colorBackgroundCacheHint">@color/sud_system_background_surface</item> + <item name="colorBackgroundFloating">@color/sud_system_background_surface</item> + <item name="android:navigationBarColor">@color/sud_system_background_surface</item> <item name="android:textColorPrimary">@color/sud_system_primary_text</item> <item name="android:textColorSecondary">@color/sud_system_secondary_text</item> @@ -71,13 +71,13 @@ </style> <style name="SudFullDynamicColorTheme.Light" parent="SudDynamicColorTheme.Light"> - <item name="android:windowBackground">@android:color/system_neutral1_50</item> + <item name="android:windowBackground">@color/sud_system_background_surface</item> <item name="android:colorForeground">@android:color/system_neutral1_900</item> - <item name="android:colorForegroundInverse">@android:color/system_neutral1_50</item> - <item name="android:colorBackground">@android:color/system_neutral1_50</item> - <item name="android:colorBackgroundCacheHint">@@android:color/system_neutral1_50</item> - <item name="colorBackgroundFloating">@android:color/system_neutral1_50</item> - <item name="android:navigationBarColor">@android:color/system_neutral1_50</item> + <item name="android:colorForegroundInverse">@color/sud_system_background_surface</item> + <item name="android:colorBackground">@color/sud_system_background_surface</item> + <item name="android:colorBackgroundCacheHint">@color/sud_system_background_surface</item> + <item name="colorBackgroundFloating">@color/sud_system_background_surface</item> + <item name="android:navigationBarColor">@color/sud_system_background_surface</item> <item name="android:textColorPrimary">@color/sud_system_primary_text</item> <item name="android:textColorSecondary">@color/sud_system_secondary_text</item> @@ -98,7 +98,7 @@ <!-- TODO: cleanup the Glifv3 dependent dynamic color theme --> <style name="SudDynamicColorThemeGlifV3" parent="SudThemeGlifV3"> <item name="colorAccent">@color/sud_dynamic_color_accent_glif_v3_dark</item> - <item name="android:textColorLink">@color/sud_system_accent1_300</item> + <item name="android:textColorLink">@color/sud_system_hyperlink_text</item> <item name="alertDialogTheme">@style/SudDynamicColorAlertDialogThemeCompat</item> <item name="android:datePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme</item> <item name="android:timePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme</item> @@ -112,7 +112,7 @@ <style name="SudDynamicColorThemeGlifV3.Light" parent="SudThemeGlifV3.Light"> <item name="colorAccent">@color/sud_dynamic_color_accent_glif_v3_light</item> - <item name="android:textColorLink">@color/sud_system_accent1_600</item> + <item name="android:textColorLink">@color/sud_system_hyperlink_text</item> <item name="alertDialogTheme">@style/SudDynamicColorAlertDialogThemeCompat.Light</item> <item name="android:datePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme.Light</item> <item name="android:timePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme.Light</item> @@ -125,13 +125,13 @@ </style> <style name="SudFullDynamicColorThemeGlifV3" parent="SudDynamicColorThemeGlifV3"> - <item name="android:windowBackground">@android:color/system_neutral1_900</item> - <item name="android:colorForeground">@android:color/system_neutral1_50</item> - <item name="android:colorForegroundInverse">@android:color/system_neutral1_900</item> - <item name="android:colorBackground">@android:color/system_neutral1_900</item> - <item name="android:colorBackgroundCacheHint">@android:color/system_neutral1_900</item> - <item name="colorBackgroundFloating">@android:color/system_neutral1_900</item> - <item name="android:navigationBarColor">@android:color/system_neutral1_900</item> + <item name="android:windowBackground">@color/sud_system_background_surface</item> + <item name="android:colorForeground">@android:color/system_neutral1_0</item> + <item name="android:colorForegroundInverse">@color/sud_system_background_surface</item> + <item name="android:colorBackground">@color/sud_system_background_surface</item> + <item name="android:colorBackgroundCacheHint">@color/sud_system_background_surface</item> + <item name="colorBackgroundFloating">@color/sud_system_background_surface</item> + <item name="android:navigationBarColor">@color/sud_system_background_surface</item> <item name="android:textColorPrimary">@color/sud_system_primary_text</item> <item name="android:textColorSecondary">@color/sud_system_secondary_text</item> @@ -150,13 +150,13 @@ </style> <style name="SudFullDynamicColorThemeGlifV3.Light" parent="SudDynamicColorThemeGlifV3.Light"> - <item name="android:windowBackground">@android:color/system_neutral1_50</item> + <item name="android:windowBackground">@color/sud_system_background_surface</item> <item name="android:colorForeground">@android:color/system_neutral1_900</item> - <item name="android:colorForegroundInverse">@android:color/system_neutral1_50</item> - <item name="android:colorBackground">@android:color/system_neutral1_50</item> - <item name="android:colorBackgroundCacheHint">@@android:color/system_neutral1_50</item> - <item name="colorBackgroundFloating">@android:color/system_neutral1_50</item> - <item name="android:navigationBarColor">@android:color/system_neutral1_50</item> + <item name="android:colorForegroundInverse">@color/sud_system_background_surface</item> + <item name="android:colorBackground">@color/sud_system_background_surface</item> + <item name="android:colorBackgroundCacheHint">@color/sud_system_background_surface</item> + <item name="colorBackgroundFloating">@color/sud_system_background_surface</item> + <item name="android:navigationBarColor">@color/sud_system_background_surface</item> <item name="android:textColorPrimary">@color/sud_system_primary_text</item> <item name="android:textColorSecondary">@color/sud_system_secondary_text</item> diff --git a/main/res/values-v33/colors.xml b/main/res/values-v33/colors.xml new file mode 100644 index 0000000..92422db --- /dev/null +++ b/main/res/values-v33/colors.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="sud_glif_v3_nav_bar_divider_color_light">@android:color/transparent</color> +</resources> diff --git a/main/res/values/attrs.xml b/main/res/values/attrs.xml index 61798dd..6a3d9a4 100644 --- a/main/res/values/attrs.xml +++ b/main/res/values/attrs.xml @@ -24,6 +24,7 @@ <attr name="sudEditTextBackgroundColor" format="color" /> <attr name="sudButtonHighlightAlpha" format="float" /> + <attr name="sudGlifHeaderTitleStyle" format="reference" /> <!-- Subset of values in "gravity" in frameworks/base/core/res/res/values/attrs.xml. Only horizontal values are listed here as the header does not support vertical gravity. --> <attr name="sudGlifHeaderGravity"> @@ -59,6 +60,8 @@ <attr name="sudGlifIconStyle" format="reference" /> <attr name="sudGlifIconSize" format="dimension" /> + <attr name="sudGlifDescriptionStyle" format="reference" /> + <attr name="sudButtonAllCaps" format="boolean" /> <attr name="sudButtonCornerRadius" format="dimension" /> <attr name="sudButtonFontFamily" format="string|reference" /> @@ -121,8 +124,15 @@ <attr name="sudItemDescriptionTitleStyle" format="reference" /> <attr name="sudContentFramePaddingTop" format="dimension|reference" /> <attr name="sudContentFramePaddingBottom" format="dimension|reference" /> + + <!-- EditBox --> <attr name="sudEditBoxStyle" format="reference" /> <attr name="sudEditBoxColor" format="reference" /> + <attr name="boxCornerRadiusTopStart" format="dimension"/> + <attr name="boxCornerRadiusTopEnd" format="dimension"/> + <attr name="boxCornerRadiusBottomStart" format="dimension"/> + <attr name="boxCornerRadiusBottomEnd" format="dimension"/> + <attr name="sudGlifContentPaddingTop" format="dimension|reference" /> <attr name="sudHasStableIds" format="boolean|reference" /> diff --git a/main/res/values/colors.xml b/main/res/values/colors.xml index 3fe0b4b..5fbdd9a 100644 --- a/main/res/values/colors.xml +++ b/main/res/values/colors.xml @@ -81,10 +81,24 @@ <color name="sud_system_neutral1_50">#f0f0f0</color> + <color name="sud_system_neutral1_200">#c6c6c6</color> + + <color name="sud_system_neutral1_300">#ababab</color> + + <color name="sud_system_neutral1_400">#909090</color> + + <color name="sud_system_neutral1_500">#757575</color> + + <color name="sud_system_neutral1_600">#5e5e5e</color> + + <color name="sud_system_neutral1_700">#464646</color> + <color name="sud_system_neutral1_800">#303030</color> <color name="sud_system_neutral1_900">#1b1b1b</color> + <color name="sud_system_neutral1_1000">#000000</color> + <color name="sud_system_neutral2_50">#f0f0f0</color> diff --git a/main/res/values/dimens.xml b/main/res/values/dimens.xml index 173d847..db585be 100644 --- a/main/res/values/dimens.xml +++ b/main/res/values/dimens.xml @@ -171,7 +171,28 @@ <dimen name="sud_items_padding_top">15dp</dimen> <dimen name="sud_items_padding_bottom">15dp</dimen> - <!-- Items Material Next--> + <!-- Page Margins Material You --> + <!-- Default margins start are 40dp in portrait mode for the large screen. However, If here + set this value, it cannot be overwrited by a smaller value from partner config. So here + set to 24dp and rewritten to 40dp through partner config the partner config + "setup_design_layout_margin_start" for glifv4 default margins. --> + <!-- TODO: b/221404901 to remove this limitation --> + <dimen name="sud_glif_margin_start_material_you">24dp</dimen> + <dimen name="sud_glif_margin_end_material_you">24dp</dimen> + + <!-- Header Area Material You --> + <dimen name="sud_header_container_margin_bottom_material_you">24dp</dimen> + <dimen name="sud_glif_header_title_size_material_you">36sp</dimen> + <dimen name="sud_glif_header_title_margin_top_material_you">24dp</dimen> + <dimen name="sud_glif_header_title_margin_bottom_material_you">0dp</dimen> + <dimen name="sud_glif_description_text_size_material_you">18sp</dimen> + <dimen name="sud_glif_description_margin_top_material_you">24dp</dimen> + <dimen name="sud_glif_description_margin_bottom_material_you">0dp</dimen> + + <dimen name="sud_glif_icon_margin_top_material_you">32dp</dimen> + <dimen name="sud_glif_icon_max_height_material_you">48dp</dimen> + + <!-- Items Material You --> <dimen name="sud_items_padding_top_material_you">18dp</dimen> <dimen name="sud_items_padding_bottom_material_you">18dp</dimen> <dimen name="sud_items_title_text_size_material_you">20sp</dimen> @@ -214,6 +235,7 @@ <!-- Edit Text dimensions --> <dimen name="sud_edit_text_min_height">56dp</dimen> <dimen name="sud_edit_text_padding_horizontal">12dp</dimen> + <dimen name="sud_edit_text_corner_radius">28dp</dimen> <!-- SwitchItem --> <dimen name="sud_switch_padding_start">16dp</dimen> diff --git a/main/res/values/styles.xml b/main/res/values/styles.xml index 1ee239d..eaee5ae 100644 --- a/main/res/values/styles.xml +++ b/main/res/values/styles.xml @@ -165,11 +165,13 @@ <item name="sudDividerInsetStart">@dimen/sud_items_glif_icon_divider_inset</item> <item name="sudDividerInsetStartNoIcon">@dimen/sud_items_glif_text_divider_inset</item> <item name="sudDividerShown">true</item> + <item name="sudGlifHeaderTitleStyle">@style/SudGlifHeaderTitle</item> <item name="sudGlifHeaderGravity">start</item> <item name="sudGlifSubtitleGravity">start</item> <item name="sucGlifHeaderMarginTop">@dimen/sud_glif_header_title_margin_top</item> - <item name="sudGlifDescriptionMarginTop">@dimen/sud_glif_description_margin_top</item> <item name="sucGlifHeaderMarginBottom">@dimen/sud_glif_header_title_margin_bottom</item> + <item name="sudGlifDescriptionStyle">@style/SudGlifDescription</item> + <item name="sudGlifDescriptionMarginTop">@dimen/sud_glif_description_margin_top</item> <item name="sudGlifDescriptionMarginBottom">@dimen/sud_glif_description_margin_bottom</item> <item name="sucHeaderContainerMarginBottom">@dimen/sud_header_container_margin_bottom</item> <item name="sudGlifIconStyle">@style/SudGlifIcon</item> @@ -254,11 +256,13 @@ <item name="sudDividerInsetStart">@dimen/sud_items_glif_icon_divider_inset</item> <item name="sudDividerInsetStartNoIcon">@dimen/sud_items_glif_text_divider_inset</item> <item name="sudDividerShown">true</item> + <item name="sudGlifHeaderTitleStyle">@style/SudGlifHeaderTitle</item> <item name="sudGlifHeaderGravity">start</item> <item name="sudGlifSubtitleGravity">start</item> <item name="sucGlifHeaderMarginTop">@dimen/sud_glif_header_title_margin_top</item> - <item name="sudGlifDescriptionMarginTop">@dimen/sud_glif_description_margin_top</item> <item name="sucGlifHeaderMarginBottom">@dimen/sud_glif_header_title_margin_bottom</item> + <item name="sudGlifDescriptionStyle">@style/SudGlifDescription</item> + <item name="sudGlifDescriptionMarginTop">@dimen/sud_glif_description_margin_top</item> <item name="sudGlifDescriptionMarginBottom">@dimen/sud_glif_description_margin_bottom</item> <item name="sucHeaderContainerMarginBottom">@dimen/sud_header_container_margin_bottom</item> <item name="sudGlifIconStyle">@style/SudGlifIcon</item> @@ -372,8 +376,51 @@ <style name="SudDynamicColorThemeGlifV3.Light" parent="SudThemeGlifV3.Light" /> <style name="SudFullDynamicColorThemeGlifV3.Light" parent="SudDynamicColorThemeGlifV3.Light" /> - <style name="SudThemeGlifV4" parent="SudThemeGlifV3" /> - <style name="SudThemeGlifV4.Light" parent="SudThemeGlifV3.Light" /> + <style name="SudThemeGlifV4" parent="SudThemeGlifV3"> + <item name="sudMarginStart">@dimen/sud_glif_margin_start_material_you</item> + <item name="sudMarginEnd">@dimen/sud_glif_margin_end_material_you</item> + <item name="sucHeaderContainerMarginBottom">@dimen/sud_header_container_margin_bottom_material_you</item> + <item name="sucGlifIconMarginTop">@dimen/sud_glif_icon_margin_top_material_you</item> + <item name="sudGlifIconSize">@dimen/sud_glif_icon_max_height_material_you</item> + <item name="sudGlifHeaderTitleStyle">@style/SudGlifHeaderTitleMaterialYou</item> + <item name="sudGlifHeaderGravity">start</item> + <item name="sucGlifHeaderMarginTop">@dimen/sud_glif_header_title_margin_top_material_you</item> + <item name="sucGlifHeaderMarginBottom">@dimen/sud_glif_header_title_margin_bottom_material_you</item> + <item name="sudGlifDescriptionStyle">@style/SudGlifDescriptionMaterialYou</item> + <item name="sudGlifDescriptionMarginTop">@dimen/sud_glif_description_margin_top_material_you</item> + <item name="sudGlifDescriptionMarginBottom">@dimen/sud_glif_description_margin_bottom_material_you</item> + <item name="textAppearanceListItem">@style/TextAppearance.SudMaterialYouItemTitle</item> + <item name="textAppearanceListItemSmall">@style/TextAppearance.SudMaterialYouItemSummary</item> + <item name="sudDividerShown">false</item> + <item name="sudItemContainerStyle">@style/SudItemContainerMaterialYou</item> + <item name="sudItemTitleStyle">@style/SudItemTitleMaterialYou</item> + <item name="sudItemSummaryStyle">@style/SudItemSummaryMaterialYou</item> + <item name="alertDialogTheme">@style/SudMaterialYouAlertDialogThemeCompat</item> + <item name="android:alertDialogTheme" >@style/SudMaterialYouAlertDialogTheme</item> + </style> + + <style name="SudThemeGlifV4.Light" parent="SudThemeGlifV3.Light"> + <item name="sudMarginStart">@dimen/sud_glif_margin_start_material_you</item> + <item name="sudMarginEnd">@dimen/sud_glif_margin_end_material_you</item> + <item name="sucHeaderContainerMarginBottom">@dimen/sud_header_container_margin_bottom_material_you</item> + <item name="sucGlifIconMarginTop">@dimen/sud_glif_icon_margin_top_material_you</item> + <item name="sudGlifIconSize">@dimen/sud_glif_icon_max_height_material_you</item> + <item name="sudGlifHeaderTitleStyle">@style/SudGlifHeaderTitleMaterialYou</item> + <item name="sudGlifHeaderGravity">start</item> + <item name="sucGlifHeaderMarginTop">@dimen/sud_glif_header_title_margin_top_material_you</item> + <item name="sucGlifHeaderMarginBottom">@dimen/sud_glif_header_title_margin_bottom_material_you</item> + <item name="sudGlifDescriptionStyle">@style/SudGlifDescriptionMaterialYou</item> + <item name="sudGlifDescriptionMarginTop">@dimen/sud_glif_description_margin_top_material_you</item> + <item name="sudGlifDescriptionMarginBottom">@dimen/sud_glif_description_margin_bottom_material_you</item> + <item name="textAppearanceListItem">@style/TextAppearance.SudMaterialYouItemTitle</item> + <item name="textAppearanceListItemSmall">@style/TextAppearance.SudMaterialYouItemSummary</item> + <item name="sudDividerShown">false</item> + <item name="sudItemContainerStyle">@style/SudItemContainerMaterialYou</item> + <item name="sudItemTitleStyle">@style/SudItemTitleMaterialYou</item> + <item name="sudItemSummaryStyle">@style/SudItemSummaryMaterialYou</item> + <item name="alertDialogTheme">@style/SudMaterialYouAlertDialogThemeCompat.Light</item> + <item name="android:alertDialogTheme" >@style/SudMaterialYouAlertDialogTheme.Light</item> + </style> <style name="SudDynamicColorTheme" /> <style name="SudDynamicColorTheme.Light" /> @@ -671,6 +718,10 @@ <!-- Edit box theme--> <style name="SudEditBoxTheme"> <item name="colorPrimary">?attr/sudEditBoxColor</item> + <item name="boxCornerRadiusTopStart">@dimen/sud_edit_text_corner_radius</item> + <item name="boxCornerRadiusTopEnd">@dimen/sud_edit_text_corner_radius</item> + <item name="boxCornerRadiusBottomStart">@dimen/sud_edit_text_corner_radius</item> + <item name="boxCornerRadiusBottomEnd">@dimen/sud_edit_text_corner_radius</item> </style> <!-- Items styles --> @@ -784,6 +835,24 @@ <item name="android:accessibilityHeading" tools:targetApi="p">true</item> </style> + <style name="SudGlifHeaderTitleMaterialYou"> + <!-- Before Honeycomb, layout_gravity is needed for FrameLayout to apply the margins --> + <item name="android:layout_gravity">top</item> + <item name="android:ellipsize">end</item> + <item name="android:maxLines">3</item> + <item name="android:gravity">?attr/sudGlifHeaderGravity</item> + <item name="android:layout_marginBottom">?attr/sucGlifHeaderMarginBottom</item> + <item name="android:layout_marginLeft">?attr/sudMarginStart</item> + <item name="android:layout_marginRight">?attr/sudMarginEnd</item> + <item name="android:layout_marginTop">?attr/sucGlifHeaderMarginTop</item> + <item name="android:fontFamily" tools:targetApi="jelly_bean">@string/sudFontSecondary</item> + <item name="android:textAlignment" tools:targetApi="jelly_bean_mr1">gravity</item> + <item name="android:textColor">?android:attr/textColorPrimary</item> + <item name="android:textDirection" tools:targetApi="jelly_bean_mr1">locale</item> + <item name="android:accessibilityHeading" tools:targetApi="p">true</item> + <item name="android:textSize">@dimen/sud_glif_header_title_size_material_you</item> + </style> + <style name="SudGlifDescription" parent="SudDescription.Glif"> <item name="android:layout_marginTop">?attr/sudGlifDescriptionMarginTop</item> <item name="android:layout_marginBottom">?attr/sudGlifDescriptionMarginBottom</item> @@ -796,6 +865,23 @@ <item name="android:textDirection" tools:targetApi="jelly_bean_mr1">locale</item> </style> + <style name="SudGlifDescriptionMaterialYou"> + <!-- Before Honeycomb, layout_gravity is needed for FrameLayout to apply the margins --> + <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault</item> + <item name="android:lineSpacingExtra">@dimen/sud_description_line_spacing_extra</item> + <item name="android:gravity">?attr/sudGlifHeaderGravity</item> + <item name="android:textAlignment" tools:targetApi="jelly_bean_mr1">gravity</item> + <item name="android:layout_marginTop">?attr/sudGlifDescriptionMarginTop</item> + <item name="android:layout_marginBottom">?attr/sudGlifDescriptionMarginBottom</item> + <item name="android:layout_marginLeft">?attr/sudMarginStart</item> + <item name="android:layout_marginStart">?attr/sudMarginStart</item> + <item name="android:layout_marginRight">?attr/sudMarginEnd</item> + <item name="android:layout_marginEnd">?attr/sudMarginEnd</item> + <item name="android:textColor">?android:attr/textColorPrimary</item> + <item name="android:textDirection" tools:targetApi="jelly_bean_mr1">locale</item> + <item name="android:textSize">@dimen/sud_glif_description_text_size_material_you</item> + </style> + <style name="SudGlifHeaderContainer"> <item name="android:gravity">?attr/sudGlifHeaderGravity</item> <item name="android:layout_marginBottom">?attr/sucHeaderContainerMarginBottom</item> @@ -803,18 +889,24 @@ <style name="SudGlifIconContainer"> <item name="android:layout_marginLeft">?attr/sudMarginStart</item> + <item name="android:layout_marginStart" tools:ignore="NewApi">?attr/sudMarginStart</item> <item name="android:layout_marginRight">?attr/sudMarginEnd</item> + <item name="android:layout_marginEnd" tools:ignore="NewApi">?attr/sudMarginEnd</item> <item name="android:layout_marginTop">?attr/sucGlifIconMarginTop</item> <item name="android:maxHeight">?attr/sudGlifIconSize</item> </style> <style name="SudGlifIcon"> - <item name="android:layout_marginLeft">?attr/sudMarginStart</item> - <item name="android:layout_marginRight">?attr/sudMarginEnd</item> - <item name="android:layout_marginTop">?attr/sucGlifIconMarginTop</item> + <item name="android:layout_marginTop">0dp</item> + <item name="android:layout_marginBottom">0dp</item> + <item name="android:layout_marginLeft">0dp</item> + <item name="android:layout_marginStart" tools:ignore="NewApi">0dp</item> + <item name="android:layout_marginRight">0dp</item> + <item name="android:layout_marginEnd" tools:ignore="NewApi">0dp</item> <item name="android:adjustViewBounds">true</item> <item name="android:maxHeight">?attr/sudGlifIconSize</item> <item name="android:scaleType">centerInside</item> + <item name="android:layout_gravity">?attr/sudGlifHeaderGravity</item> </style> <style name="TextAppearance.SudGlifBody" parent="android:TextAppearance"> diff --git a/main/src/com/google/android/setupdesign/template/RecyclerMixin.java b/main/src/com/google/android/setupdesign/template/RecyclerMixin.java index c4e8f56..46b2faf 100644 --- a/main/src/com/google/android/setupdesign/template/RecyclerMixin.java +++ b/main/src/com/google/android/setupdesign/template/RecyclerMixin.java @@ -17,6 +17,7 @@ package com.google.android.setupdesign.template; import android.content.Context; +import android.content.res.Resources.Theme; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Build; @@ -26,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; import android.util.AttributeSet; +import android.util.TypedValue; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -90,22 +92,31 @@ public class RecyclerMixin implements Mixin { header = ((HeaderRecyclerView) recyclerView).getHeader(); } - isDividerDisplay = isShowItemsDivider(); + isDividerDisplay = isShowItemsDivider(layout.getContext()); if (isDividerDisplay) { this.recyclerView.addItemDecoration(dividerDecoration); } } - private boolean isShowItemsDivider() { + private boolean isShowItemsDivider(Context context) { + // Get the dividershown attribute value from theme + TypedValue typedValue = new TypedValue(); + Theme theme = context.getTheme(); + theme.resolveAttribute(R.attr.sudDividerShown, typedValue, true); + boolean isShownDivider = (typedValue.data != 0); + // Skips to add item decoration if config flag is false. if (PartnerStyleHelper.shouldApplyPartnerResource(templateLayout)) { if (PartnerConfigHelper.get(recyclerView.getContext()) .isPartnerConfigAvailable(PartnerConfig.CONFIG_ITEMS_DIVIDER_SHOWN)) { return PartnerConfigHelper.get(recyclerView.getContext()) - .getBoolean(recyclerView.getContext(), PartnerConfig.CONFIG_ITEMS_DIVIDER_SHOWN, true); + .getBoolean( + recyclerView.getContext(), + PartnerConfig.CONFIG_ITEMS_DIVIDER_SHOWN, + isShownDivider); } } - return true; + return isShownDivider; } /** @@ -300,6 +311,10 @@ public class RecyclerMixin implements Mixin { return divider; } + public boolean hasDivider() { + return isDividerDisplay; + } + /** * Sets the divider item decoration directly. This is a low level method which should be used only * if custom divider behavior is needed, for example if the divider should be shown / hidden in diff --git a/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java b/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java index 4094f3a..ffb3d70 100644 --- a/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java +++ b/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java @@ -29,6 +29,8 @@ import android.util.DisplayMetrics; import android.view.Display; import android.view.ViewGroup; import android.view.WindowInsets; +import android.view.WindowManager; +import android.view.WindowMetrics; import android.widget.FrameLayout; import androidx.annotation.VisibleForTesting; import com.google.android.setupcompat.partnerconfig.PartnerConfig; @@ -138,8 +140,12 @@ public class IntrinsicSizeFrameLayout extends FrameLayout { @VisibleForTesting boolean isWindowSizeSmallerThanDisplaySize() { boolean result = false; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - getWindowVisibleDisplayFrame(windowVisibleDisplayRect); + /// NOMUTANTS--reason(b/221151816): Support setCurrentWindowMetrics from ShadowWindowManagerImpl + // to verify this case + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + WindowManager windowManager = getContext().getSystemService(WindowManager.class); + WindowMetrics windowMetrics = windowManager.getCurrentWindowMetrics(); + windowVisibleDisplayRect.set(windowMetrics.getBounds()); Display display = getDisplay(); if (display != null) { diff --git a/strings/AndroidManifest.xml b/strings/AndroidManifest.xml index c323fc7..7461fc6 100644 --- a/strings/AndroidManifest.xml +++ b/strings/AndroidManifest.xml @@ -20,6 +20,6 @@ <uses-sdk android:minSdkVersion="14" - android:targetSdkVersion="31" /> + android:targetSdkVersion="32" /> </manifest> |