diff options
author | Setup Wizard Team <android-setup-team-eng@google.com> | 2021-03-04 08:34:18 +0800 |
---|---|---|
committer | Alex Li <alexylli@google.com> | 2021-03-04 02:17:18 +0000 |
commit | 99993f10df91c854e746d6bc7b08ffb94e991037 (patch) | |
tree | 4b8dbfe31b3f43c3a1a75682287e42b369b89296 /main/src | |
parent | 883aac8a701b71ea53e3854cc5db36feb845cff7 (diff) | |
download | setupdesign-99993f10df91c854e746d6bc7b08ffb94e991037.tar.gz |
Import updated Android Setupdesign Library 360784725
Copied from google3/third_party/java_src/android_libs/setupdesign
Test: mm
Bug: 181818312
Included changes:
- 360784725 [GlifLoadingLayout] Add AnimatorListener to listen animat...
- 360618304 [BC][Tranisition] Create a new makeActivityOptionsCompat ...
- 360543676 [GlifLoadingLayout] Sample code to configure illustration...
- 359258205 Support Android Studio Preview.
- 358971575 [BC][Stencil] Remove divider for BC layout
- 358803513 [GlifLoadingLayout] Implement APIs addAnimatorListener/re...
- 358755934 [GlifLoadingLayout] Clear customization map after illustr...
- 358576176 [GlifLoadingLayout] fix the error while porting to gerrit
PiperOrigin-RevId: 360784725
Change-Id: I94521f92c82a4e1e00049417074e55aa1982dc61
Diffstat (limited to 'main/src')
18 files changed, 163 insertions, 24 deletions
diff --git a/main/src/com/google/android/setupdesign/GlifLayout.java b/main/src/com/google/android/setupdesign/GlifLayout.java index 417bdc2..ac778b4 100644 --- a/main/src/com/google/android/setupdesign/GlifLayout.java +++ b/main/src/com/google/android/setupdesign/GlifLayout.java @@ -107,6 +107,9 @@ public class GlifLayout extends PartnerCustomizationLayout { // All the constructors delegate to this init method. The 3-argument constructor is not // available in LinearLayout before v11, so call super with the exact same arguments. private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.SudGlifLayout, defStyleAttr, 0); diff --git a/main/src/com/google/android/setupdesign/GlifListLayout.java b/main/src/com/google/android/setupdesign/GlifListLayout.java index 31335cc..fba6433 100644 --- a/main/src/com/google/android/setupdesign/GlifListLayout.java +++ b/main/src/com/google/android/setupdesign/GlifListLayout.java @@ -63,6 +63,10 @@ public class GlifListLayout extends GlifLayout { } private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + listMixin = new ListMixin(this, attrs, defStyleAttr); registerMixin(ListMixin.class, listMixin); diff --git a/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java b/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java index c74cff0..d96d5af 100644 --- a/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java +++ b/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java @@ -64,6 +64,10 @@ public class GlifRecyclerLayout extends GlifLayout { } private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + recyclerMixin.parseAttributes(attrs, defStyleAttr); registerMixin(RecyclerMixin.class, recyclerMixin); diff --git a/main/src/com/google/android/setupdesign/SetupWizardLayout.java b/main/src/com/google/android/setupdesign/SetupWizardLayout.java index 5797aa7..265bdf8 100644 --- a/main/src/com/google/android/setupdesign/SetupWizardLayout.java +++ b/main/src/com/google/android/setupdesign/SetupWizardLayout.java @@ -80,6 +80,10 @@ public class SetupWizardLayout extends TemplateLayout { // All the constructors delegate to this init method. The 3-argument constructor is not // available in LinearLayout before v11, so call super with the exact same arguments. private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + registerMixin(SystemNavBarMixin.class, new SystemNavBarMixin(this, /* window= */ null)); registerMixin( HeaderMixin.class, diff --git a/main/src/com/google/android/setupdesign/SetupWizardListLayout.java b/main/src/com/google/android/setupdesign/SetupWizardListLayout.java index 760602f..dcb35d2 100644 --- a/main/src/com/google/android/setupdesign/SetupWizardListLayout.java +++ b/main/src/com/google/android/setupdesign/SetupWizardListLayout.java @@ -59,6 +59,10 @@ public class SetupWizardListLayout extends SetupWizardLayout { } private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + listMixin = new ListMixin(this, attrs, defStyleAttr); registerMixin(ListMixin.class, listMixin); diff --git a/main/src/com/google/android/setupdesign/SetupWizardRecyclerLayout.java b/main/src/com/google/android/setupdesign/SetupWizardRecyclerLayout.java index f0dc138..f2a7e3d 100644 --- a/main/src/com/google/android/setupdesign/SetupWizardRecyclerLayout.java +++ b/main/src/com/google/android/setupdesign/SetupWizardRecyclerLayout.java @@ -60,6 +60,10 @@ public class SetupWizardRecyclerLayout extends SetupWizardLayout { } private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + recyclerMixin.parseAttributes(attrs, defStyleAttr); registerMixin(RecyclerMixin.class, recyclerMixin); diff --git a/main/src/com/google/android/setupdesign/template/ListMixin.java b/main/src/com/google/android/setupdesign/template/ListMixin.java index 0ba5b0a..5963a79 100644 --- a/main/src/com/google/android/setupdesign/template/ListMixin.java +++ b/main/src/com/google/android/setupdesign/template/ListMixin.java @@ -67,35 +67,56 @@ public class ListMixin implements Mixin { final ItemGroup inflated = (ItemGroup) new ItemInflater(context).inflate(entries); setAdapter(new ItemAdapter(inflated)); } - int dividerInset = a.getDimensionPixelSize(R.styleable.SudListMixin_sudDividerInset, -1); - if (dividerInset != -1) { - setDividerInset(dividerInset); - } else { - int dividerInsetStart = - a.getDimensionPixelSize(R.styleable.SudListMixin_sudDividerInsetStart, 0); - int dividerInsetEnd = a.getDimensionPixelSize(R.styleable.SudListMixin_sudDividerInsetEnd, 0); - - if (PartnerStyleHelper.shouldApplyPartnerHeavyThemeResource(templateLayout)) { - if (PartnerConfigHelper.get(context) - .isPartnerConfigAvailable(PartnerConfig.CONFIG_LAYOUT_MARGIN_START)) { - dividerInsetStart = - (int) - PartnerConfigHelper.get(context) - .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START); - } - if (PartnerConfigHelper.get(context) - .isPartnerConfigAvailable(PartnerConfig.CONFIG_LAYOUT_MARGIN_END)) { - dividerInsetEnd = - (int) - PartnerConfigHelper.get(context) - .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_END); + + boolean isDividerDisplay = isDividerShown(context); + if (isDividerDisplay) { + int dividerInset = a.getDimensionPixelSize(R.styleable.SudListMixin_sudDividerInset, -1); + if (dividerInset != -1) { + setDividerInset(dividerInset); + } else { + int dividerInsetStart = + a.getDimensionPixelSize(R.styleable.SudListMixin_sudDividerInsetStart, 0); + int dividerInsetEnd = + a.getDimensionPixelSize(R.styleable.SudListMixin_sudDividerInsetEnd, 0); + + if (PartnerStyleHelper.shouldApplyPartnerHeavyThemeResource(templateLayout)) { + if (PartnerConfigHelper.get(context) + .isPartnerConfigAvailable(PartnerConfig.CONFIG_LAYOUT_MARGIN_START)) { + dividerInsetStart = + (int) + PartnerConfigHelper.get(context) + .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_START); + } + if (PartnerConfigHelper.get(context) + .isPartnerConfigAvailable(PartnerConfig.CONFIG_LAYOUT_MARGIN_END)) { + dividerInsetEnd = + (int) + PartnerConfigHelper.get(context) + .getDimension(context, PartnerConfig.CONFIG_LAYOUT_MARGIN_END); + } } + setDividerInsets(dividerInsetStart, dividerInsetEnd); } - setDividerInsets(dividerInsetStart, dividerInsetEnd); } a.recycle(); } + private boolean isDividerShown(Context context) { + if (PartnerStyleHelper.shouldApplyPartnerResource(templateLayout)) { + if (PartnerConfigHelper.get(context) + .isPartnerConfigAvailable(PartnerConfig.CONFIG_ITEMS_DIVIDER_SHOWN)) { + boolean isDividerDisplayed = + PartnerConfigHelper.get(context) + .getBoolean(context, PartnerConfig.CONFIG_ITEMS_DIVIDER_SHOWN, true); + if (!isDividerDisplayed) { + getListView().setDivider(null); + return isDividerDisplayed; + } + } + } + return true; + } + /** * @return The list view contained in the layout, as marked by {@code @android:id/list}. This will * return {@code null} if the list doesn't exist in the layout. diff --git a/main/src/com/google/android/setupdesign/template/RecyclerMixin.java b/main/src/com/google/android/setupdesign/template/RecyclerMixin.java index fb3e06d..169e995 100644 --- a/main/src/com/google/android/setupdesign/template/RecyclerMixin.java +++ b/main/src/com/google/android/setupdesign/template/RecyclerMixin.java @@ -67,6 +67,7 @@ public class RecyclerMixin implements Mixin { private int dividerInsetStart; private int dividerInsetEnd; + private boolean isDividerDisplay = true; /** * Creates the RecyclerMixin. Unlike typical mixins which are created in the constructor, this @@ -89,7 +90,22 @@ public class RecyclerMixin implements Mixin { header = ((HeaderRecyclerView) recyclerView).getHeader(); } - this.recyclerView.addItemDecoration(dividerDecoration); + isDividerDisplay = isShowItemsDivider(); + if (isDividerDisplay) { + this.recyclerView.addItemDecoration(dividerDecoration); + } + } + + private boolean isShowItemsDivider() { + // 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); + } + } + return true; } /** @@ -121,6 +137,12 @@ public class RecyclerMixin implements Mixin { adapter.setHasStableIds(a.getBoolean(R.styleable.SudRecyclerMixin_sudHasStableIds, false)); setAdapter(adapter); } + + if (!isDividerDisplay) { + a.recycle(); + return; + } + int dividerInset = a.getDimensionPixelSize(R.styleable.SudRecyclerMixin_sudDividerInset, -1); if (dividerInset != -1) { setDividerInset(dividerInset); diff --git a/main/src/com/google/android/setupdesign/transition/support/TransitionHelper.java b/main/src/com/google/android/setupdesign/transition/support/TransitionHelper.java index 381b85a..44707f8 100644 --- a/main/src/com/google/android/setupdesign/transition/support/TransitionHelper.java +++ b/main/src/com/google/android/setupdesign/transition/support/TransitionHelper.java @@ -20,10 +20,14 @@ import static com.google.android.setupdesign.transition.TransitionHelper.CONFIG_ import static com.google.android.setupdesign.transition.TransitionHelper.getConfigTransitionType; import android.annotation.TargetApi; +import android.app.Activity; import android.os.Build; import android.os.Build.VERSION_CODES; import androidx.fragment.app.Fragment; import android.util.Log; +import android.view.Window; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityOptionsCompat; import com.google.android.material.transition.platform.MaterialSharedAxis; import com.google.android.setupcompat.partnerconfig.PartnerConfig; @@ -95,4 +99,35 @@ public class TransitionHelper { + VERSION_CODES.M); } } + + /** + * A wrapper method, create an {@link ActivityOptionsCompat} to transition between activities as + * the {@link ActivityOptionsCompat} parameter of {@link + * androidx.activity.result.ActivityResultLauncher#launch} method. + * + * @throws IllegalArgumentException is thrown when {@code activity} is null. + */ + @Nullable + public static ActivityOptionsCompat makeActivityOptionsCompat(Activity activity) { + ActivityOptionsCompat activityOptionsCompat = null; + + if (activity == null) { + throw new IllegalArgumentException("Invalid activity=" + activity); + } + + if (getConfigTransitionType(activity) == CONFIG_TRANSITION_SHARED_X_AXIS) { + if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { + if (activity.getWindow() != null + && !activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)) { + Log.w( + TAG, + "The transition won't take effect due to NO FEATURE_ACTIVITY_TRANSITIONS feature"); + } + + activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity); + } + } + + return activityOptionsCompat; + } } diff --git a/main/src/com/google/android/setupdesign/view/FillContentLayout.java b/main/src/com/google/android/setupdesign/view/FillContentLayout.java index 49e195f..af49fbb 100644 --- a/main/src/com/google/android/setupdesign/view/FillContentLayout.java +++ b/main/src/com/google/android/setupdesign/view/FillContentLayout.java @@ -58,6 +58,10 @@ public class FillContentLayout extends FrameLayout { } private void init(Context context, AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SudFillContentLayout, defStyleAttr, 0); diff --git a/main/src/com/google/android/setupdesign/view/HeaderRecyclerView.java b/main/src/com/google/android/setupdesign/view/HeaderRecyclerView.java index b3161fd..57fc35d 100644 --- a/main/src/com/google/android/setupdesign/view/HeaderRecyclerView.java +++ b/main/src/com/google/android/setupdesign/view/HeaderRecyclerView.java @@ -218,6 +218,10 @@ public class HeaderRecyclerView extends RecyclerView { } private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + final TypedArray a = getContext() .obtainStyledAttributes(attrs, R.styleable.SudHeaderRecyclerView, defStyleAttr, 0); diff --git a/main/src/com/google/android/setupdesign/view/Illustration.java b/main/src/com/google/android/setupdesign/view/Illustration.java index 14072db..e890307 100644 --- a/main/src/com/google/android/setupdesign/view/Illustration.java +++ b/main/src/com/google/android/setupdesign/view/Illustration.java @@ -70,6 +70,10 @@ public class Illustration extends FrameLayout { // All the constructors delegate to this init method. The 3-argument constructor is not // available in FrameLayout before v11, so call super with the exact same arguments. private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + if (attrs != null) { TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.SudIllustration, defStyleAttr, 0); diff --git a/main/src/com/google/android/setupdesign/view/IllustrationVideoView.java b/main/src/com/google/android/setupdesign/view/IllustrationVideoView.java index a64642f..7f6449d 100644 --- a/main/src/com/google/android/setupdesign/view/IllustrationVideoView.java +++ b/main/src/com/google/android/setupdesign/view/IllustrationVideoView.java @@ -95,6 +95,12 @@ public class IllustrationVideoView extends TextureView public IllustrationVideoView(Context context, AttributeSet attrs) { super(context, attrs); + if (!isInEditMode()) { + init(context, attrs); + } + } + + private void init(Context context, AttributeSet attrs) { final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SudIllustrationVideoView); final int videoResId = a.getResourceId(R.styleable.SudIllustrationVideoView_sudVideo, 0); diff --git a/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java b/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java index f714205..02ab6fc 100644 --- a/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java +++ b/main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java @@ -54,6 +54,10 @@ public class IntrinsicSizeFrameLayout extends FrameLayout { } private void init(Context context, AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + final TypedArray a = context.obtainStyledAttributes( attrs, R.styleable.SudIntrinsicSizeFrameLayout, defStyleAttr, 0); diff --git a/main/src/com/google/android/setupdesign/view/NavigationBar.java b/main/src/com/google/android/setupdesign/view/NavigationBar.java index 996bbbc..df3bee4 100644 --- a/main/src/com/google/android/setupdesign/view/NavigationBar.java +++ b/main/src/com/google/android/setupdesign/view/NavigationBar.java @@ -103,6 +103,10 @@ public class NavigationBar extends LinearLayout implements View.OnClickListener // All the constructors delegate to this init method. The 3-argument constructor is not // available in LinearLayout before v11, so call super with the exact same arguments. private void init() { + if (isInEditMode()) { + return; + } + View.inflate(getContext(), R.layout.sud_navbar_view, this); nextButton = (Button) findViewById(R.id.sud_navbar_next); backButton = (Button) findViewById(R.id.sud_navbar_back); diff --git a/main/src/com/google/android/setupdesign/view/NavigationBarButton.java b/main/src/com/google/android/setupdesign/view/NavigationBarButton.java index 3421d09..bb1e506 100644 --- a/main/src/com/google/android/setupdesign/view/NavigationBarButton.java +++ b/main/src/com/google/android/setupdesign/view/NavigationBarButton.java @@ -45,6 +45,10 @@ public class NavigationBarButton extends Button { } private void init() { + if (isInEditMode()) { + return; + } + // Unfortunately, drawableStart and drawableEnd set through XML does not call the setter, // so manually getting it and wrapping it in the compat drawable. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { diff --git a/main/src/com/google/android/setupdesign/view/RichTextView.java b/main/src/com/google/android/setupdesign/view/RichTextView.java index 338b856..f3348b4 100644 --- a/main/src/com/google/android/setupdesign/view/RichTextView.java +++ b/main/src/com/google/android/setupdesign/view/RichTextView.java @@ -106,6 +106,10 @@ public class RichTextView extends AppCompatTextView implements OnLinkClickListen } private void init() { + if (isInEditMode()) { + return; + } + accessibilityHelper = new LinkAccessibilityHelper(this); ViewCompat.setAccessibilityDelegate(this, accessibilityHelper); } diff --git a/main/src/com/google/android/setupdesign/view/StickyHeaderListView.java b/main/src/com/google/android/setupdesign/view/StickyHeaderListView.java index 3efb85c..07d1781 100644 --- a/main/src/com/google/android/setupdesign/view/StickyHeaderListView.java +++ b/main/src/com/google/android/setupdesign/view/StickyHeaderListView.java @@ -73,6 +73,10 @@ public class StickyHeaderListView extends ListView { } private void init(AttributeSet attrs, int defStyleAttr) { + if (isInEditMode()) { + return; + } + final TypedArray a = getContext() .obtainStyledAttributes(attrs, R.styleable.SudStickyHeaderListView, defStyleAttr, 0); |