summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorSetup Wizard Team <android-setup-team-eng@google.com>2021-03-04 08:34:18 +0800
committerAlex Li <alexylli@google.com>2021-03-04 02:17:18 +0000
commit99993f10df91c854e746d6bc7b08ffb94e991037 (patch)
tree4b8dbfe31b3f43c3a1a75682287e42b369b89296 /main/src
parent883aac8a701b71ea53e3854cc5db36feb845cff7 (diff)
downloadsetupdesign-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')
-rw-r--r--main/src/com/google/android/setupdesign/GlifLayout.java3
-rw-r--r--main/src/com/google/android/setupdesign/GlifListLayout.java4
-rw-r--r--main/src/com/google/android/setupdesign/GlifRecyclerLayout.java4
-rw-r--r--main/src/com/google/android/setupdesign/SetupWizardLayout.java4
-rw-r--r--main/src/com/google/android/setupdesign/SetupWizardListLayout.java4
-rw-r--r--main/src/com/google/android/setupdesign/SetupWizardRecyclerLayout.java4
-rw-r--r--main/src/com/google/android/setupdesign/template/ListMixin.java67
-rw-r--r--main/src/com/google/android/setupdesign/template/RecyclerMixin.java24
-rw-r--r--main/src/com/google/android/setupdesign/transition/support/TransitionHelper.java35
-rw-r--r--main/src/com/google/android/setupdesign/view/FillContentLayout.java4
-rw-r--r--main/src/com/google/android/setupdesign/view/HeaderRecyclerView.java4
-rw-r--r--main/src/com/google/android/setupdesign/view/Illustration.java4
-rw-r--r--main/src/com/google/android/setupdesign/view/IllustrationVideoView.java6
-rw-r--r--main/src/com/google/android/setupdesign/view/IntrinsicSizeFrameLayout.java4
-rw-r--r--main/src/com/google/android/setupdesign/view/NavigationBar.java4
-rw-r--r--main/src/com/google/android/setupdesign/view/NavigationBarButton.java4
-rw-r--r--main/src/com/google/android/setupdesign/view/RichTextView.java4
-rw-r--r--main/src/com/google/android/setupdesign/view/StickyHeaderListView.java4
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);