Fix external/setupdesign for use_resource_processor: true am: ad88e339de

Original change: https://android-review.googlesource.com/c/platform/external/setupdesign/+/2767770

Change-Id: I296a6df2e1384079993a3bff34908a1f163a4b1f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index f2b5df6..3653d5f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -29,10 +29,11 @@
     name: "setupdesign",
     static_libs: [
         "androidx.annotation_annotation",
+        "androidx.appcompat_appcompat",
         "androidx.core_core",
         "androidx.legacy_legacy-support-core-ui",
-        "androidx.appcompat_appcompat",
         "androidx.recyclerview_recyclerview",
+        "androidx.window_window",
         "com.google.android.material_material",
         "error_prone_annotations",
         "setupcompat",
@@ -47,6 +48,9 @@
         "main/src/**/*.java",
     ],
     min_sdk_version: "14",
+    optimize: {
+        proguard_flags_files: ["proguard.flags"],
+    }
 }
 
 //
diff --git a/lint-baseline.xml b/lint-baseline.xml
index c369cea..6177906 100644
--- a/lint-baseline.xml
+++ b/lint-baseline.xml
@@ -3,85 +3,8 @@
 
     <issue
         id="NewApi"
-        message="`android:datePickerDialogTheme` requires API level 21 (current min is 14)"
-        errorLine1="        &lt;item name=&quot;android:datePickerDialogTheme&quot;>@style/SudDateTimePickerDialogTheme&lt;/item>"
-        errorLine2="              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="external/setupdesign/main/res/values/styles.xml"
-            line="291"
-            column="15"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="`android:timePickerDialogTheme` requires API level 21 (current min is 14)"
-        errorLine1="        &lt;item name=&quot;android:timePickerDialogTheme&quot;>@style/SudDateTimePickerDialogTheme&lt;/item>"
-        errorLine2="              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="external/setupdesign/main/res/values/styles.xml"
-            line="292"
-            column="15"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="`android:datePickerDialogTheme` requires API level 21 (current min is 14)"
-        errorLine1="        &lt;item name=&quot;android:datePickerDialogTheme&quot;>@style/SudDateTimePickerDialogTheme.Light&lt;/item>"
-        errorLine2="              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="external/setupdesign/main/res/values/styles.xml"
-            line="302"
-            column="15"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="`android:timePickerDialogTheme` requires API level 21 (current min is 14)"
-        errorLine1="        &lt;item name=&quot;android:timePickerDialogTheme&quot;>@style/SudDateTimePickerDialogTheme.Light&lt;/item>"
-        errorLine2="              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="external/setupdesign/main/res/values/styles.xml"
-            line="303"
-            column="15"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="`android:stateListAnimator` requires API level 21 (current min is 14)"
-        errorLine1="        &lt;item name=&quot;android:stateListAnimator&quot;>@null&lt;/item>"
-        errorLine2="              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="external/setupdesign/main/res/values/styles.xml"
-            line="523"
-            column="15"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="`android:fontFamily` requires API level 16 (current min is 14)"
-        errorLine1="        &lt;item name=&quot;android:fontFamily&quot;>@string/sudFontSecondaryMedium&lt;/item>"
-        errorLine2="              ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="external/setupdesign/main/res/values/styles.xml"
-            line="619"
-            column="15"/>
-    </issue>
-
-    <issue
-        id="NewApi"
-        message="Attribute `paddingStart` referenced here can result in a crash on some specific devices older than API 17 (current min is 14)"
-        errorLine1="        android:paddingStart=&quot;?attr/listPreferredItemPaddingLeft&quot;>"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="external/setupdesign/main/res/layout/sud_items_expandable_switch.xml"
-            line="38"
-            column="9"/>
-    </issue>
-
-    <issue
-        id="NewApi"
         message="`@android:interpolator/linear_out_slow_in` requires API level 21 (current min is 14)"
-        errorLine1="        android:interpolator=&quot;@android:interpolator/linear_out_slow_in&quot;"
+        errorLine1='        android:interpolator="@android:interpolator/linear_out_slow_in"'
         errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="external/setupdesign/main/res/anim/sud_pre_p_activity_close_enter.xml"
@@ -92,7 +15,7 @@
     <issue
         id="NewApi"
         message="`@android:interpolator/fast_out_slow_in` requires API level 21 (current min is 14)"
-        errorLine1="        android:interpolator=&quot;@android:interpolator/fast_out_slow_in&quot;"
+        errorLine1='        android:interpolator="@android:interpolator/fast_out_slow_in"'
         errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="external/setupdesign/main/res/anim/sud_pre_p_activity_open_exit.xml"
@@ -100,4 +23,44 @@
             column="9"/>
     </issue>
 
-</issues>
+    <issue
+        id="NewApi"
+        message="`android:datePickerDialogTheme` requires API level 21 (current min is 14)">
+        <location
+            file="external/setupdesign/main/res/values/styles.xml"
+            line="371"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="`android:datePickerDialogTheme` requires API level 21 (current min is 14)">
+        <location
+            file="external/setupdesign/main/res/values/styles.xml"
+            line="385"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="`android:stateListAnimator` requires API level 21 (current min is 14)">
+        <location
+            file="external/setupdesign/main/res/values/styles.xml"
+            line="718"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="`android:timePickerDialogTheme` requires API level 21 (current min is 14)">
+        <location
+            file="external/setupdesign/main/res/values/styles.xml"
+            line="372"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="`android:timePickerDialogTheme` requires API level 21 (current min is 14)">
+        <location
+            file="external/setupdesign/main/res/values/styles.xml"
+            line="386"/>
+    </issue>
+
+</issues>
\ No newline at end of file
diff --git a/lottie_loading_layout/res/layout/sud_glif_fullscreen_loading_embedded_template_card.xml b/lottie_loading_layout/res/layout/sud_glif_fullscreen_loading_embedded_template_card.xml
new file mode 100644
index 0000000..b24fda4
--- /dev/null
+++ b/lottie_loading_layout/res/layout/sud_glif_fullscreen_loading_embedded_template_card.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    style="@style/SudGlifCardBackground"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+    <com.google.android.setupdesign.view.IntrinsicSizeFrameLayout
+        style="@style/SudGlifCardContainer"
+        android:layout_width="@dimen/sud_glif_card_width"
+        android:layout_height="wrap_content"
+        android:height="@dimen/sud_glif_card_height">
+
+        <include layout="@layout/sud_glif_fullscreen_loading_embedded_template_content" />
+
+    </com.google.android.setupdesign.view.IntrinsicSizeFrameLayout>
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+</LinearLayout>
diff --git a/lottie_loading_layout/res/layout/sud_glif_fullscreen_loading_embedded_template_content.xml b/lottie_loading_layout/res/layout/sud_glif_fullscreen_loading_embedded_template_content.xml
new file mode 100644
index 0000000..e1dc7c4
--- /dev/null
+++ b/lottie_loading_layout/res/layout/sud_glif_fullscreen_loading_embedded_template_content.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ViewStub
+        android:id="@+id/sud_loading_layout_lottie_stub"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:inflatedId="@+id/sud_layout_lottie_illustration"
+        android:layout="@layout/sud_loading_fullscreen_lottie_layout" />
+
+    <LinearLayout
+        android:id="@+id/sud_layout_template_content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <ViewStub
+            android:id="@+id/sud_layout_sticky_header"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
+
+                <!-- Ignore UnusedAttribute: scrollIndicators is new in M. Default to no indicators in older
+                    versions. -->
+                <com.google.android.setupdesign.view.BottomScrollView
+                    android:id="@+id/sud_header_scroll_view"
+                    android:layout_width="match_parent"
+                    android:layout_height="?attr/sudLoadingHeaderHeight"
+                    android:fillViewport="true"
+                    android:scrollIndicators="?attr/sudScrollIndicators"
+                    tools:ignore="UnusedAttribute">
+
+                    <include layout="@layout/sud_glif_header" />
+
+                </com.google.android.setupdesign.view.BottomScrollView>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical">
+
+                    <ViewStub
+                        android:id="@+id/sud_loading_layout_illustration_stub"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:inflatedId="@+id/sud_layout_progress_illustration"
+                        android:layout="@layout/sud_loading_illustration_layout" />
+
+                    <FrameLayout
+                        android:id="@+id/sud_layout_content"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:visibility="gone" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <ViewStub
+            android:id="@+id/suc_layout_footer"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+    </LinearLayout>
+
+</FrameLayout>
diff --git a/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_card.xml b/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_card.xml
new file mode 100644
index 0000000..9092e1a
--- /dev/null
+++ b/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_card.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    style="@style/SudGlifCardBackground"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+    <com.google.android.setupdesign.view.IntrinsicSizeFrameLayout
+        style="@style/SudGlifCardContainer"
+        android:layout_width="@dimen/sud_glif_card_width"
+        android:layout_height="wrap_content"
+        android:height="@dimen/sud_glif_card_height">
+
+        <include layout="@layout/sud_glif_loading_embedded_template_content" />
+
+    </com.google.android.setupdesign.view.IntrinsicSizeFrameLayout>
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+</LinearLayout>
diff --git a/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_compat.xml b/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_compat.xml
new file mode 100644
index 0000000..b79851a
--- /dev/null
+++ b/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_compat.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<com.google.android.setupcompat.view.StatusBarBackgroundLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+  <include layout="@layout/sud_glif_loading_embedded_template_content" />
+
+</com.google.android.setupcompat.view.StatusBarBackgroundLayout>
diff --git a/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_content.xml b/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_content.xml
new file mode 100644
index 0000000..a49aead
--- /dev/null
+++ b/lottie_loading_layout/res/layout/sud_glif_loading_embedded_template_content.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/sud_layout_template_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <ViewStub
+        android:id="@+id/sud_layout_sticky_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+    <!-- Ignore UnusedAttribute: scrollIndicators is new in M. Default to no indicators in older
+        versions. -->
+    <com.google.android.setupdesign.view.BottomScrollView
+        android:id="@+id/sud_scroll_view"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:fillViewport="true"
+        android:scrollIndicators="?attr/sudScrollIndicators"
+        tools:ignore="UnusedAttribute">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <include layout="@layout/sud_glif_header" />
+
+            <ViewStub
+                android:id="@+id/sud_loading_layout_illustration_stub"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:inflatedId="@+id/sud_layout_progress_illustration"
+                android:layout="@layout/sud_loading_illustration_layout" />
+
+            <ViewStub
+                android:id="@+id/sud_loading_layout_lottie_stub"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:inflatedId="@+id/sud_layout_lottie_illustration"
+                android:layout="@layout/sud_loading_lottie_layout" />
+
+            <FrameLayout
+                android:id="@+id/sud_layout_content"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:visibility="gone" />
+
+        </LinearLayout>
+
+    </com.google.android.setupdesign.view.BottomScrollView>
+
+    <ViewStub
+        android:id="@+id/suc_layout_footer"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/lottie_loading_layout/res/values-sw600dp-v31/layouts.xml b/lottie_loading_layout/res/values-sw600dp-v31/layouts.xml
index f627c06..534b956 100644
--- a/lottie_loading_layout/res/values-sw600dp-v31/layouts.xml
+++ b/lottie_loading_layout/res/values-sw600dp-v31/layouts.xml
@@ -17,5 +17,7 @@
 
 <resources xmlns:tools="http://schemas.android.com/tools">
   <item name="sud_glif_loading_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_template_card</item>
+  <item name="sud_glif_loading_embedded_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_embedded_template_card</item>
   <item name="sud_glif_fullscreen_loading_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_fullscreen_loading_template_card</item>
+  <item name="sud_glif_fullscreen_loading_embedded_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_fullscreen_loading_embedded_template_card</item>
 </resources>
diff --git a/lottie_loading_layout/res/values-sw600dp/layouts.xml b/lottie_loading_layout/res/values-sw600dp/layouts.xml
index 9fe5404..3afbee7 100644
--- a/lottie_loading_layout/res/values-sw600dp/layouts.xml
+++ b/lottie_loading_layout/res/values-sw600dp/layouts.xml
@@ -17,4 +17,5 @@
 
 <resources xmlns:tools="http://schemas.android.com/tools">
   <item name="sud_glif_loading_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_template_card</item>
+  <item name="sud_glif_loading_embedded_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_embedded_template_card</item>
 </resources>
diff --git a/lottie_loading_layout/res/values/layouts.xml b/lottie_loading_layout/res/values/layouts.xml
index 9ea5e67..8298bb1 100644
--- a/lottie_loading_layout/res/values/layouts.xml
+++ b/lottie_loading_layout/res/values/layouts.xml
@@ -17,5 +17,7 @@
 
 <resources xmlns:tools="http://schemas.android.com/tools">
   <item name="sud_glif_loading_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_template_compat</item>
+  <item name="sud_glif_loading_embedded_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_embedded_template_compat</item>
   <item name="sud_glif_fullscreen_loading_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_template_compat</item>
+  <item name="sud_glif_fullscreen_loading_embedded_template" type="layout"  tools:ignore="UnusedResources">@layout/sud_glif_loading_embedded_template_compat</item>
 </resources>
\ No newline at end of file
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 4983c03..00be9ea 100644
--- a/lottie_loading_layout/src/com/google/android/setupdesign/GlifLoadingLayout.java
+++ b/lottie_loading_layout/src/com/google/android/setupdesign/GlifLoadingLayout.java
@@ -17,26 +17,28 @@
 package com.google.android.setupdesign;
 
 import static com.google.android.setupcompat.partnerconfig.Util.isNightMode;
+import static java.lang.Math.min;
 
 import android.animation.Animator;
 import android.animation.Animator.AnimatorListener;
-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;
 import android.os.Build;
+import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
+import android.os.PersistableBundle;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.View.MeasureSpec;
 import android.view.ViewGroup;
 import android.view.ViewStub;
 import android.widget.LinearLayout;
@@ -50,7 +52,6 @@
 import com.airbnb.lottie.LottieAnimationView;
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
-import com.airbnb.lottie.SimpleColorFilter;
 import com.airbnb.lottie.model.KeyPath;
 import com.airbnb.lottie.value.LottieValueCallback;
 import com.airbnb.lottie.value.SimpleLottieValueCallback;
@@ -62,14 +63,13 @@
 import com.google.android.setupcompat.util.BuildCompatUtils;
 import com.google.android.setupdesign.lottieloadinglayout.R;
 import com.google.android.setupdesign.util.LayoutStyler;
+import com.google.android.setupdesign.util.LottieAnimationHelper;
 import com.google.android.setupdesign.view.IllustrationVideoView;
 import java.io.InputStream;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * A GLIF themed layout with a {@link com.airbnb.lottie.LottieAnimationView} to showing lottie
@@ -88,11 +88,11 @@
 
   @VisibleForTesting @RawRes int customLottieResource = 0;
 
-  @VisibleForTesting Map<KeyPath, SimpleColorFilter> customizationMap = new HashMap<>();
-
   private AnimatorListener animatorListener;
   private Runnable nextActionRunnable;
   private boolean workFinished;
+  protected static final String GLIF_LAYOUT_TYPE = "GlifLayoutType";
+  protected static final String LOADING_LAYOUT = "LoadingLayout";
   @VisibleForTesting public boolean runRunnable;
 
   @VisibleForTesting
@@ -116,7 +116,6 @@
     init(attrs, com.google.android.setupdesign.R.attr.sudLayoutTheme);
   }
 
-  @TargetApi(VERSION_CODES.HONEYCOMB)
   public GlifLoadingLayout(Context context, AttributeSet attrs, int defStyleAttr) {
     super(context, attrs, defStyleAttr);
     init(attrs, defStyleAttr);
@@ -230,7 +229,6 @@
 
     if (!illustrationType.equals(type)) {
       illustrationType = type;
-      customizationMap.clear();
     }
 
     switch (type) {
@@ -453,7 +451,7 @@
           paddingBottom =
               (int) configPaddingBottom
                   - (int)
-                      Math.min(
+                      min(
                           configPaddingBottom,
                           getButtonContainerHeight(footerBarMixin.getButtonContainer()));
         }
@@ -521,7 +519,13 @@
         lottieView.playAnimation();
         setLottieLayoutVisibility(View.VISIBLE);
         setIllustrationLayoutVisibility(View.GONE);
-        applyThemeCustomization();
+        LottieAnimationHelper.get()
+            .applyColor(
+                getContext(),
+                findLottieAnimationView(),
+                isNightMode(getResources().getConfiguration())
+                    ? animationConfig.getDarkThemeCustomization()
+                    : animationConfig.getLightThemeCustomization());
       } else {
         setLottieLayoutVisibility(View.GONE);
         setIllustrationLayoutVisibility(View.VISIBLE);
@@ -654,43 +658,6 @@
     }
   }
 
-  @VisibleForTesting
-  protected void loadCustomization() {
-    if (customizationMap.isEmpty()) {
-      PartnerConfigHelper helper = PartnerConfigHelper.get(getContext());
-      List<String> lists =
-          helper.getStringArray(
-              getContext(),
-              isNightMode(getResources().getConfiguration())
-                  ? animationConfig.getDarkThemeCustomization()
-                  : animationConfig.getLightThemeCustomization());
-      for (String item : lists) {
-        String[] splitItem = item.split(":");
-        if (splitItem.length == 2) {
-          customizationMap.put(
-              new KeyPath("**", splitItem[0], "**"),
-              new SimpleColorFilter(Color.parseColor(splitItem[1])));
-        } else {
-          Log.w(TAG, "incorrect format customization, value=" + item);
-        }
-      }
-    }
-  }
-
-  @VisibleForTesting
-  protected void applyThemeCustomization() {
-    LottieAnimationView animationView = findLottieAnimationView();
-    if (animationView != null) {
-      loadCustomization();
-      for (KeyPath keyPath : customizationMap.keySet()) {
-        animationView.addValueCallback(
-            keyPath,
-            LottieProperty.COLOR_FILTER,
-            new LottieValueCallback<>(customizationMap.get(keyPath)));
-      }
-    }
-  }
-
   @Nullable
   private View peekLottieLayout() {
     return findViewById(R.id.sud_layout_lottie_illustration);
@@ -703,17 +670,28 @@
 
   @Override
   protected View onInflateTemplate(LayoutInflater inflater, int template) {
+    Context context = getContext();
     if (template == 0) {
       boolean useFullScreenIllustration =
-          PartnerConfigHelper.get(getContext())
+          PartnerConfigHelper.get(context)
               .getBoolean(
-                  getContext(),
+                  context,
                   PartnerConfig.CONFIG_LOADING_LAYOUT_FULL_SCREEN_ILLUSTRATION_ENABLED,
                   false);
       if (useFullScreenIllustration) {
         template = R.layout.sud_glif_fullscreen_loading_template;
+
+        // if the activity is embedded should apply an embedded layout.
+        if (isEmbeddedActivityOnePaneEnabled(context)) {
+          template = R.layout.sud_glif_fullscreen_loading_embedded_template;
+        }
       } else {
         template = R.layout.sud_glif_loading_template;
+
+        // if the activity is embedded should apply an embedded layout.
+        if (isEmbeddedActivityOnePaneEnabled(context)) {
+          template = R.layout.sud_glif_loading_embedded_template;
+        }
       }
     }
     return inflateTemplate(
@@ -730,6 +708,16 @@
     return super.findContainer(containerId);
   }
 
+  @Override
+  protected void onDetachedFromWindow() {
+    if (VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+      PersistableBundle bundle = new PersistableBundle();
+      bundle.putString(GLIF_LAYOUT_TYPE, LOADING_LAYOUT);
+      setLayoutTypeMetrics(bundle);
+      super.onDetachedFromWindow();
+    }
+  }
+
   /** The progress config used to maps to different animation */
   public enum LottieAnimationConfig {
     CONFIG_DEFAULT(
diff --git a/lottie_loading_layout/src/com/google/android/setupdesign/util/LottieAnimationHelper.java b/lottie_loading_layout/src/com/google/android/setupdesign/util/LottieAnimationHelper.java
new file mode 100644
index 0000000..e6cdc11
--- /dev/null
+++ b/lottie_loading_layout/src/com/google/android/setupdesign/util/LottieAnimationHelper.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.setupdesign.util;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Color;
+import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import com.airbnb.lottie.LottieAnimationView;
+import com.airbnb.lottie.LottieProperty;
+import com.airbnb.lottie.SimpleColorFilter;
+import com.airbnb.lottie.model.KeyPath;
+import com.airbnb.lottie.value.LottieValueCallback;
+import com.google.android.setupcompat.partnerconfig.PartnerConfig;
+import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper;
+import com.google.android.setupcompat.util.BuildCompatUtils;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/** A helper to help apply color on lottie animation */
+public class LottieAnimationHelper {
+
+  private static final String TAG = "LottieAnimationHelper";
+
+  private static LottieAnimationHelper instance = null;
+
+  @VisibleForTesting public final Map<String, Integer> colorResourceMapping;
+
+  public static LottieAnimationHelper get() {
+    if (instance == null) {
+      instance = new LottieAnimationHelper();
+    }
+    return instance;
+  }
+
+  private LottieAnimationHelper() {
+    colorResourceMapping = new HashMap<>();
+  }
+
+  /**
+   * The color resource is from PartnerConfig, which is a string array and each string will be
+   * {key_path_name}:@{color_reference} or {key_path_name}:{color code}
+   */
+  public void applyColor(
+      @NonNull Context context, LottieAnimationView lottieView, PartnerConfig partnerConfig) {
+    applyColor(
+        context,
+        lottieView,
+        PartnerConfigHelper.get(context).getStringArray(context, partnerConfig));
+  }
+
+  /**
+   * The color resource is from list of string and each string will be
+   * {key_path_name}:@{color_reference} or {key_path_name}:#{color code}
+   */
+  public void applyColor(
+      @NonNull Context context, LottieAnimationView lottieView, List<String> colorMappings) {
+    applyColor(context, lottieView, parseColorMapping(context, colorMappings));
+  }
+
+  /**
+   * The color resource is from a color mapping table and the key is the keypath, and value is color
+   * Integer.
+   */
+  public void applyColor(
+      @NonNull Context context,
+      LottieAnimationView lottieView,
+      Map<KeyPath, Integer> colorMappings) {
+    for (KeyPath keyPath : colorMappings.keySet()) {
+      lottieView.addValueCallback(
+          keyPath,
+          LottieProperty.COLOR_FILTER,
+          new LottieValueCallback<>(new SimpleColorFilter(colorMappings.get(keyPath))));
+    }
+  }
+
+  private Map<KeyPath, Integer> parseColorMapping(
+      @NonNull Context context, List<String> colorMappings) {
+    Map<KeyPath, Integer> customizationMap = new HashMap<>();
+    for (String colorMapping : colorMappings) {
+      String[] splitItem = colorMapping.split(":");
+      if (splitItem.length == 2) {
+        if (splitItem[1].charAt(0) == '#') { // color code
+          try {
+            customizationMap.put(
+                new KeyPath("**", splitItem[0], "**"), Color.parseColor(splitItem[1]));
+          } catch (IllegalArgumentException exception) {
+            Log.e(TAG, "Unknown color, value=" + colorMapping);
+          }
+        } else if (splitItem[1].charAt(0) == '@') { // color resource
+          int colorResourceId;
+          if (colorResourceMapping.containsKey(splitItem[1])) {
+            colorResourceId = colorResourceMapping.get(splitItem[1]);
+          } else {
+            colorResourceId =
+                context
+                    .getResources()
+                    .getIdentifier(splitItem[1].substring(1), "color", context.getPackageName());
+            colorResourceMapping.put(splitItem[1], colorResourceId);
+          }
+          try {
+            customizationMap.put(
+                new KeyPath("**", splitItem[0], "**"),
+                context.getResources().getColor(colorResourceId));
+          } catch (Resources.NotFoundException exception) {
+            Log.e(TAG, "Resource Not found, resource value=" + colorMapping);
+          }
+        } else {
+          Log.w(TAG, "incorrect format customization, value=" + colorMapping);
+        }
+      } else {
+        Log.w(TAG, "incorrect format customization, value=" + colorMapping);
+      }
+    }
+    return customizationMap;
+  }
+}
diff --git a/main/res/anim-night-v34/shared_x_axis_activity_close_enter.xml b/main/res/anim-night-v34/shared_x_axis_activity_close_enter.xml
new file mode 100644
index 0000000..2496f2d
--- /dev/null
+++ b/main/res/anim-night-v34/shared_x_axis_activity_close_enter.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false"
+    android:showBackdrop="true"
+    android:backdropColor="@color/sud_glif_background_color_dark">
+
+  <alpha
+      android:fromAlpha="0.0"
+      android:toAlpha="1.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_decelerate"
+      android:startOffset="100"
+      android:duration="350" />
+
+  <translate
+      android:fromXDelta="-25%"
+      android:toXDelta="0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/anim-night-v34/shared_x_axis_activity_open_enter.xml b/main/res/anim-night-v34/shared_x_axis_activity_open_enter.xml
new file mode 100644
index 0000000..a26b3e9
--- /dev/null
+++ b/main/res/anim-night-v34/shared_x_axis_activity_open_enter.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false"
+    android:showBackdrop="true"
+    android:backdropColor="@color/sud_glif_background_color_dark">
+
+  <alpha
+      android:fromAlpha="0.0"
+      android:toAlpha="1.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_decelerate"
+      android:startOffset="100"
+      android:duration="350" />
+
+  <translate
+      android:fromXDelta="25%"
+      android:toXDelta="0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/anim-v34/shared_x_axis_activity_close_enter.xml b/main/res/anim-v34/shared_x_axis_activity_close_enter.xml
new file mode 100644
index 0000000..54cfc89
--- /dev/null
+++ b/main/res/anim-v34/shared_x_axis_activity_close_enter.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false"
+    android:showBackdrop="true"
+    android:backdropColor="@color/sud_glif_background_color_light">
+
+  <alpha
+      android:fromAlpha="0.0"
+      android:toAlpha="1.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_decelerate"
+      android:startOffset="100"
+      android:duration="350" />
+
+  <translate
+      android:fromXDelta="-25%"
+      android:toXDelta="0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/anim-v34/shared_x_axis_activity_close_enter_dynamic_color.xml b/main/res/anim-v34/shared_x_axis_activity_close_enter_dynamic_color.xml
new file mode 100644
index 0000000..a9d0a82
--- /dev/null
+++ b/main/res/anim-v34/shared_x_axis_activity_close_enter_dynamic_color.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false"
+    android:showBackdrop="true"
+    android:backdropColor="@color/sud_system_background_surface">
+
+  <alpha
+      android:fromAlpha="0.0"
+      android:toAlpha="1.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_decelerate"
+      android:startOffset="100"
+      android:duration="350" />
+
+  <translate
+      android:fromXDelta="-25%"
+      android:toXDelta="0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/anim-v34/shared_x_axis_activity_close_exit.xml b/main/res/anim-v34/shared_x_axis_activity_close_exit.xml
new file mode 100644
index 0000000..e2a79e0
--- /dev/null
+++ b/main/res/anim-v34/shared_x_axis_activity_close_exit.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false">
+
+  <alpha
+      android:fromAlpha="1.0"
+      android:toAlpha="0.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_accelerate"
+      android:startOffset="0"
+      android:duration="100" />
+
+  <translate
+      android:fromXDelta="0"
+      android:toXDelta="25%"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/anim-v34/shared_x_axis_activity_open_enter.xml b/main/res/anim-v34/shared_x_axis_activity_open_enter.xml
new file mode 100644
index 0000000..b0a5ca6
--- /dev/null
+++ b/main/res/anim-v34/shared_x_axis_activity_open_enter.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false"
+    android:showBackdrop="true"
+    android:backdropColor="@color/sud_glif_background_color_light">
+
+  <alpha
+      android:fromAlpha="0.0"
+      android:toAlpha="1.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_decelerate"
+      android:startOffset="100"
+      android:duration="350" />
+
+  <translate
+      android:fromXDelta="25%"
+      android:toXDelta="0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/anim-v34/shared_x_axis_activity_open_enter_dynamic_color.xml b/main/res/anim-v34/shared_x_axis_activity_open_enter_dynamic_color.xml
new file mode 100644
index 0000000..3d797cf
--- /dev/null
+++ b/main/res/anim-v34/shared_x_axis_activity_open_enter_dynamic_color.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false"
+    android:showBackdrop="true"
+    android:backdropColor="@color/sud_system_background_surface">
+
+  <alpha
+      android:fromAlpha="0.0"
+      android:toAlpha="1.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_decelerate"
+      android:startOffset="100"
+      android:duration="350" />
+
+  <translate
+      android:fromXDelta="25%"
+      android:toXDelta="0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/anim-v34/shared_x_axis_activity_open_exit.xml b/main/res/anim-v34/shared_x_axis_activity_open_exit.xml
new file mode 100644
index 0000000..f55baeb
--- /dev/null
+++ b/main/res/anim-v34/shared_x_axis_activity_open_exit.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false">
+
+  <alpha
+      android:fromAlpha="1.0"
+      android:toAlpha="0.0"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/standard_accelerate"
+      android:startOffset="0"
+      android:duration="100" />
+
+  <translate
+      android:fromXDelta="0"
+      android:toXDelta="-25%"
+      android:fillEnabled="true"
+      android:fillBefore="true"
+      android:fillAfter="true"
+      android:interpolator="@interpolator/fast_out_extra_slow_in"
+      android:startOffset="0"
+      android:duration="450" />
+
+</set>
\ No newline at end of file
diff --git a/main/res/interpolator-v21/fast_out_extra_slow_in.xml b/main/res/interpolator-v21/fast_out_extra_slow_in.xml
new file mode 100644
index 0000000..f296a82
--- /dev/null
+++ b/main/res/interpolator-v21/fast_out_extra_slow_in.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:pathData="M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1"/>
\ No newline at end of file
diff --git a/main/res/interpolator-v21/standard_accelerate.xml b/main/res/interpolator-v21/standard_accelerate.xml
new file mode 100644
index 0000000..394393d
--- /dev/null
+++ b/main/res/interpolator-v21/standard_accelerate.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.3"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
\ No newline at end of file
diff --git a/main/res/interpolator-v21/standard_decelerate.xml b/main/res/interpolator-v21/standard_decelerate.xml
new file mode 100644
index 0000000..579f4f5
--- /dev/null
+++ b/main/res/interpolator-v21/standard_decelerate.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0"
+    android:controlY1="0"
+    android:controlX2="0"
+    android:controlY2="1"/>
\ No newline at end of file
diff --git a/main/res/layout/sud_glif_blank_embedded_template_card.xml b/main/res/layout/sud_glif_blank_embedded_template_card.xml
new file mode 100644
index 0000000..89badcd
--- /dev/null
+++ b/main/res/layout/sud_glif_blank_embedded_template_card.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    style="@style/SudGlifCardBackground"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+    <com.google.android.setupdesign.view.IntrinsicSizeFrameLayout
+        style="@style/SudGlifCardContainer"
+        android:layout_width="@dimen/sud_glif_card_width"
+        android:layout_height="wrap_content"
+        android:height="@dimen/sud_glif_card_height">
+
+        <include layout="@layout/sud_glif_blank_embedded_template_content" />
+
+    </com.google.android.setupdesign.view.IntrinsicSizeFrameLayout>
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+</LinearLayout>
diff --git a/main/res/layout/sud_glif_blank_embedded_template_compact.xml b/main/res/layout/sud_glif_blank_embedded_template_compact.xml
new file mode 100644
index 0000000..5b26190
--- /dev/null
+++ b/main/res/layout/sud_glif_blank_embedded_template_compact.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<com.google.android.setupcompat.view.StatusBarBackgroundLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include layout="@layout/sud_glif_blank_embedded_template_content" />
+
+</com.google.android.setupcompat.view.StatusBarBackgroundLayout>
diff --git a/main/res/layout/sud_glif_blank_embedded_template_content.xml b/main/res/layout/sud_glif_blank_embedded_template_content.xml
new file mode 100644
index 0000000..359c3a8
--- /dev/null
+++ b/main/res/layout/sud_glif_blank_embedded_template_content.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/sud_layout_template_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <ViewStub
+        android:id="@+id/sud_layout_sticky_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+    <FrameLayout
+        android:id="@+id/sud_layout_content"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+    <ViewStub
+        android:id="@+id/suc_layout_footer"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/main/res/layout/sud_glif_embedded_template_card.xml b/main/res/layout/sud_glif_embedded_template_card.xml
new file mode 100644
index 0000000..381cfcb
--- /dev/null
+++ b/main/res/layout/sud_glif_embedded_template_card.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    style="@style/SudGlifCardBackground"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+    <com.google.android.setupdesign.view.IntrinsicSizeFrameLayout
+        style="@style/SudGlifCardContainer"
+        android:layout_width="@dimen/sud_glif_card_width"
+        android:layout_height="wrap_content"
+        android:height="@dimen/sud_glif_card_height">
+
+        <include layout="@layout/sud_glif_embedded_template_content" />
+
+    </com.google.android.setupdesign.view.IntrinsicSizeFrameLayout>
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+</LinearLayout>
diff --git a/main/res/layout/sud_glif_embedded_template_compact.xml b/main/res/layout/sud_glif_embedded_template_compact.xml
new file mode 100644
index 0000000..952c012
--- /dev/null
+++ b/main/res/layout/sud_glif_embedded_template_compact.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<com.google.android.setupcompat.view.StatusBarBackgroundLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include layout="@layout/sud_glif_embedded_template_content" />
+
+</com.google.android.setupcompat.view.StatusBarBackgroundLayout>
diff --git a/main/res/layout/sud_glif_embedded_template_content.xml b/main/res/layout/sud_glif_embedded_template_content.xml
new file mode 100644
index 0000000..c535723
--- /dev/null
+++ b/main/res/layout/sud_glif_embedded_template_content.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/sud_layout_template_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <ViewStub
+        android:id="@+id/sud_layout_sticky_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+    <!-- Ignore UnusedAttribute: scrollIndicators is new in M. Default to no indicators in older
+         versions. -->
+    <com.google.android.setupdesign.view.BottomScrollView
+        android:id="@+id/sud_scroll_view"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:fillViewport="true"
+        android:scrollIndicators="?attr/sudScrollIndicators"
+        tools:ignore="UnusedAttribute">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <include layout="@layout/sud_glif_header" />
+
+            <ViewStub
+                android:id="@+id/sud_layout_illustration_progress_stub"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:inflatedId="@+id/sud_layout_progress_illustration"
+                android:layout="@layout/sud_progress_illustration_layout" />
+
+            <FrameLayout
+                android:id="@+id/sud_layout_content"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1" />
+
+        </LinearLayout>
+
+    </com.google.android.setupdesign.view.BottomScrollView>
+
+    <ViewStub
+        android:id="@+id/suc_layout_footer"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/main/res/layout/sud_glif_list_embedded_template_card.xml b/main/res/layout/sud_glif_list_embedded_template_card.xml
new file mode 100644
index 0000000..45e35b3
--- /dev/null
+++ b/main/res/layout/sud_glif_list_embedded_template_card.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    style="@style/SudGlifCardBackground"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+    <com.google.android.setupdesign.view.IntrinsicSizeFrameLayout
+        style="@style/SudGlifCardContainer"
+        android:layout_width="@dimen/sud_glif_card_width"
+        android:layout_height="wrap_content"
+        android:height="@dimen/sud_glif_card_height">
+
+        <include layout="@layout/sud_glif_list_embedded_template_content" />
+
+    </com.google.android.setupdesign.view.IntrinsicSizeFrameLayout>
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+</LinearLayout>
diff --git a/main/res/layout/sud_glif_list_embedded_template_compact.xml b/main/res/layout/sud_glif_list_embedded_template_compact.xml
new file mode 100644
index 0000000..a72a33b
--- /dev/null
+++ b/main/res/layout/sud_glif_list_embedded_template_compact.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<com.google.android.setupcompat.view.StatusBarBackgroundLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include layout="@layout/sud_glif_list_embedded_template_content" />
+
+</com.google.android.setupcompat.view.StatusBarBackgroundLayout>
diff --git a/main/res/layout/sud_glif_list_embedded_template_content.xml b/main/res/layout/sud_glif_list_embedded_template_content.xml
new file mode 100644
index 0000000..4644c80
--- /dev/null
+++ b/main/res/layout/sud_glif_list_embedded_template_content.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/sud_layout_template_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <ViewStub
+        android:id="@+id/sud_layout_sticky_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+    <!-- Ignore UnusedAttribute: scrollIndicators is new in M. Default to no indicators in older
+         versions. -->
+    <com.google.android.setupdesign.view.StickyHeaderListView
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@android:id/list"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:scrollIndicators="?attr/sudScrollIndicators"
+        app:sudHeader="@layout/sud_glif_header"
+        tools:ignore="UnusedAttribute" />
+
+    <ViewStub
+        android:id="@+id/suc_layout_footer"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/main/res/layout/sud_glif_recycler_embedded_template_card.xml b/main/res/layout/sud_glif_recycler_embedded_template_card.xml
new file mode 100644
index 0000000..316abb2
--- /dev/null
+++ b/main/res/layout/sud_glif_recycler_embedded_template_card.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    style="@style/SudGlifCardBackground"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+    <com.google.android.setupdesign.view.IntrinsicSizeFrameLayout
+        style="@style/SudGlifCardContainer"
+        android:layout_width="@dimen/sud_glif_card_width"
+        android:layout_height="wrap_content"
+        android:height="@dimen/sud_glif_card_height">
+
+        <include layout="@layout/sud_glif_recycler_embedded_template_content" />
+
+    </com.google.android.setupdesign.view.IntrinsicSizeFrameLayout>
+
+    <View
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:visibility="invisible" />
+
+</LinearLayout>
diff --git a/main/res/layout/sud_glif_recycler_embedded_template_compact.xml b/main/res/layout/sud_glif_recycler_embedded_template_compact.xml
new file mode 100644
index 0000000..4280d05
--- /dev/null
+++ b/main/res/layout/sud_glif_recycler_embedded_template_compact.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<com.google.android.setupcompat.view.StatusBarBackgroundLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/suc_layout_status"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include layout="@layout/sud_glif_recycler_embedded_template_content" />
+
+</com.google.android.setupcompat.view.StatusBarBackgroundLayout>
diff --git a/main/res/layout/sud_glif_recycler_embedded_template_content.xml b/main/res/layout/sud_glif_recycler_embedded_template_content.xml
new file mode 100644
index 0000000..dafd3c8
--- /dev/null
+++ b/main/res/layout/sud_glif_recycler_embedded_template_content.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/sud_layout_template_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <ViewStub
+        android:id="@+id/sud_layout_sticky_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+    <!-- Ignore UnusedAttribute: scrollIndicators is new in M. Default to no indicators in older
+         versions. -->
+    <com.google.android.setupdesign.view.HeaderRecyclerView
+        android:id="@+id/sud_recycler_view"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:scrollbars="vertical"
+        android:scrollIndicators="?attr/sudScrollIndicators"
+        app:sudHeader="@layout/sud_glif_header"
+        tools:ignore="UnusedAttribute" />
+
+    <ViewStub
+        android:id="@+id/suc_layout_footer"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/main/res/values-sw600dp-land-v33/config.xml b/main/res/values-sw600dp-land-v33/config.xml
new file mode 100644
index 0000000..2d2238c
--- /dev/null
+++ b/main/res/values-sw600dp-land-v33/config.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2023 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<resources>
+  <bool name="suc_footer_bar_button_align_end">true</bool>
+</resources>
\ No newline at end of file
diff --git a/main/res/values-sw600dp-land-v33/dimens.xml b/main/res/values-sw600dp-land-v33/dimens.xml
new file mode 100644
index 0000000..d672ce6
--- /dev/null
+++ b/main/res/values-sw600dp-land-v33/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<resources>
+
+    <!-- General -->
+    <dimen name="sud_glif_land_middle_horizontal_spacing">76dp</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/main/res/values-sw600dp/layouts.xml b/main/res/values-sw600dp/layouts.xml
index 3c27d25..41bc74e 100644
--- a/main/res/values-sw600dp/layouts.xml
+++ b/main/res/values-sw600dp/layouts.xml
@@ -25,7 +25,9 @@
     <item name="sud_no_scroll_template_short" type="layout">@layout/sud_no_scroll_template_card</item>
 
     <item name="sud_glif_template" type="layout">@layout/sud_glif_template_card</item>
+    <item name="sud_glif_embedded_template" type="layout">@layout/sud_glif_embedded_template_card</item>
     <item name="sud_glif_list_template" type="layout">@layout/sud_glif_list_template_card</item>
+    <item name="sud_glif_list_embedded_template" type="layout">@layout/sud_glif_list_embedded_template_card</item>
     <item name="sud_glif_blank_template" type="layout">@layout/sud_glif_blank_template_card</item>
 
     <item name="sud_preference_recycler_view" type="layout">@layout/sud_preference_recycler_view_normal</item>
@@ -34,7 +36,9 @@
     <item name="sud_recycler_template_short" type="layout">@layout/sud_recycler_template_card</item>
 
     <item name="sud_glif_preference_template" type="layout">@layout/sud_glif_blank_template_card</item>
+    <item name="sud_glif_preference_embedded_template" type="layout">@layout/sud_glif_blank_embedded_template_card</item>
     <item name="sud_glif_recycler_template" type="layout">@layout/sud_glif_recycler_template_card</item>
+    <item name="sud_glif_recycler_embedded_template" type="layout">@layout/sud_glif_recycler_embedded_template_card</item>
 
 </resources>
 
diff --git a/main/res/values-v31/colors.xml b/main/res/values-v31/colors.xml
index 1ed67df..12b13eb 100644
--- a/main/res/values-v31/colors.xml
+++ b/main/res/values-v31/colors.xml
@@ -15,7 +15,8 @@
     limitations under the License.
 -->
 
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@color/sud_system_accent*,@color/sud_system_neutral*">
   <!-- Default color for BC -->
 
   <color name="sud_color_accent_glif_v3_dark">#ff669df6</color>
@@ -46,6 +47,19 @@
 
   <color name="sud_system_accent2_100">@android:color/system_accent2_100</color>
 
+  <color name="sud_system_accent2_200">@android:color/system_accent2_200</color>
+
+  <color name="sud_system_accent2_600">@android:color/system_accent2_600</color>
+
+
+
+  <color name="sud_system_accent3_100">@android:color/system_accent3_100</color>
+
+  <color name="sud_system_accent3_200">@android:color/system_accent3_200</color>
+
+  <color name="sud_system_accent3_600">@android:color/system_accent3_600</color>
+
+
 
 
   <color name="sud_system_neutral1_0">@android:color/system_neutral1_0</color>
diff --git a/main/res/values-v31/styles.xml b/main/res/values-v31/styles.xml
index 5fab1c1..7216905 100644
--- a/main/res/values-v31/styles.xml
+++ b/main/res/values-v31/styles.xml
@@ -22,6 +22,7 @@
     <item name="android:colorAccent">?attr/colorAccent</item>
     <item name="android:textColorLink">@color/sud_system_hyperlink_text</item>
     <item name="alertDialogTheme">@style/SudDynamicColorAlertDialogThemeCompat</item>
+    <item name="android:alertDialogTheme">@style/SudDynamicColorAlertDialogTheme</item>
     <item name="android:datePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme</item>
     <item name="android:timePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme</item>
     <item name="sucFullDynamicColor">false</item>
@@ -37,6 +38,7 @@
     <item name="android:colorAccent">?attr/colorAccent</item>
     <item name="android:textColorLink">@color/sud_system_hyperlink_text</item>
     <item name="alertDialogTheme">@style/SudDynamicColorAlertDialogThemeCompat.Light</item>
+    <item name="android:alertDialogTheme">@style/SudDynamicColorAlertDialogTheme.Light</item>
     <item name="android:datePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme.Light</item>
     <item name="android:timePickerDialogTheme">@style/SudDynamicColorDateTimePickerDialogTheme.Light</item>
     <item name="sucFullDynamicColor">false</item>
@@ -71,8 +73,11 @@
     <item name="colorSwitchThumbNormal">@color/switch_thumb_material_dark</item>
 
     <item name="alertDialogTheme">@style/SudFullDynamicColorAlertDialogThemeCompat</item>
+    <item name="android:alertDialogTheme">@style/SudFullDynamicColorAlertDialogTheme</item>
 
     <item name="sucFullDynamicColor">true</item>
+
+    <item name="android:windowAnimationStyle">@style/Animation.SudWindowAnimation.DynamicColor</item>
   </style>
 
   <style name="SudFullDynamicColorTheme.Light" parent="SudDynamicColorTheme.Light">
@@ -95,8 +100,11 @@
     <item name="colorSwitchThumbNormal">@color/switch_thumb_material_light</item>
 
     <item name="alertDialogTheme">@style/SudFullDynamicColorAlertDialogThemeCompat.Light</item>
+    <item name="android:alertDialogTheme">@style/SudFullDynamicColorAlertDialogTheme.Light</item>
 
     <item name="sucFullDynamicColor">true</item>
+
+    <item name="android:windowAnimationStyle">@style/Animation.SudWindowAnimation.DynamicColor</item>
   </style>
 
   <!-- Main theme for dynamic color -->
@@ -188,6 +196,15 @@
     <item name="android:windowTitleStyle">@style/SudMaterialYouWindowTitleStyle</item>
   </style>
 
+  <style name="SudDynamicColorAlertDialogTheme" parent="android:Theme.DeviceDefault.Dialog.Alert">
+    <item name="android:textAllCaps">false</item>
+    <item name="android:colorBackground">@color/sud_glif_v3_dialog_background_color_dark</item>
+    <item name="colorAccent">@color/sud_dynamic_color_accent_glif_v3_dark</item>
+    <item name="dialogCornerRadius">@dimen/sud_glif_device_default_dialog_corner_radius</item>
+    <item name="buttonBarButtonStyle">@style/SudAppCompatButtonButtonBarAlertDialog</item>
+    <item name="android:windowTitleStyle">@style/SudMaterialYouWindowTitleStyle</item>
+  </style>
+
   <style name="SudDynamicColorAlertDialogThemeCompat.Light" parent="Theme.AppCompat.Light.Dialog.Alert">
     <item name="android:textAllCaps">false</item>
     <item name="android:colorBackground">@color/sud_glif_v3_dialog_background_color_light</item>
@@ -197,6 +214,16 @@
     <item name="android:windowTitleStyle">@style/SudMaterialYouWindowTitleStyle</item>
   </style>
 
+  <style name="SudDynamicColorAlertDialogTheme.Light" parent="android:Theme.DeviceDefault.Light.Dialog.Alert">
+    <item name="android:textAllCaps">false</item>
+    <item name="android:colorBackground">@color/sud_glif_v3_dialog_background_color_light</item>
+    <item name="colorAccent">@color/sud_dynamic_color_accent_glif_v3_light</item>
+    <item name="dialogCornerRadius">@dimen/sud_glif_device_default_dialog_corner_radius</item>
+    <item name="buttonBarButtonStyle">@style/SudAppCompatButtonButtonBarAlertDialog.Light</item>
+    <item name="android:windowTitleStyle">@style/SudMaterialYouWindowTitleStyle</item>
+  </style>
+
+
   <style name="SudAppCompatButtonButtonBarAlertDialog" parent="Widget.AppCompat.ButtonBar.AlertDialog">
     <item name="android:layout_marginStart">@dimen/sud_glif_alert_dialog_footer_bar_padding_start</item>
     <item name="android:layout_marginLeft">@dimen/sud_glif_alert_dialog_footer_bar_padding_start</item>
@@ -233,6 +260,14 @@
     <item name="android:colorBackground">@color/sud_system_neutral1_50</item>
   </style>
 
+  <style name="SudFullDynamicColorAlertDialogTheme" parent="SudDynamicColorAlertDialogTheme">
+    <item name="android:colorBackground">@color/sud_system_neutral1_900</item>
+  </style>
+  <style name="SudFullDynamicColorAlertDialogTheme.Light" parent="SudDynamicColorAlertDialogTheme.Light">
+    <item name="android:colorBackground">@color/sud_system_neutral1_50</item>
+  </style>
+
+
   <!-- Dynamic color theme for date time dialog -->
   <style name="SudDynamicColorDateTimePickerDialogTheme" parent="SudDateTimePickerDialogTheme">
     <item name="colorAccent">@color/sud_dynamic_color_accent_glif_v3_dark</item>
diff --git a/main/res/values-v34/colors.xml b/main/res/values-v34/colors.xml
new file mode 100644
index 0000000..9460e6e
--- /dev/null
+++ b/main/res/values-v34/colors.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<resources>
+  <!-- Accent color -->
+  <color name="sud_dynamic_color_accent_glif_v3_dark">@color/sud_system_accent1_300</color>
+</resources>
\ No newline at end of file
diff --git a/main/res/values-v34/dimens.xml b/main/res/values-v34/dimens.xml
new file mode 100644
index 0000000..84b245c
--- /dev/null
+++ b/main/res/values-v34/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<resources>
+  <dimen name="sud_glif_margin_start_material_you">24dp</dimen>
+  <dimen name="sud_glif_description_text_size_material_you">14sp</dimen>
+  <dimen name="sud_description_text_size">14sp</dimen>
+</resources>
\ No newline at end of file
diff --git a/main/res/values-v34/styles.xml b/main/res/values-v34/styles.xml
new file mode 100644
index 0000000..24411e2
--- /dev/null
+++ b/main/res/values-v34/styles.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (C) 2022 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <style name="Animation.SudWindowAnimation" parent="@android:style/Animation.Activity">
+        <item name="android:activityOpenEnterAnimation">@anim/shared_x_axis_activity_open_enter</item>
+        <item name="android:activityOpenExitAnimation">@anim/shared_x_axis_activity_open_exit</item>
+        <item name="android:activityCloseEnterAnimation">@anim/shared_x_axis_activity_close_enter</item>
+        <item name="android:activityCloseExitAnimation">@anim/shared_x_axis_activity_close_exit</item>
+    </style>
+
+    <style name="Animation.SudWindowAnimation.DynamicColor" parent="@android:style/Animation.Activity">
+        <item name="android:activityOpenEnterAnimation">@anim/shared_x_axis_activity_open_enter_dynamic_color</item>
+        <item name="android:activityOpenExitAnimation">@anim/shared_x_axis_activity_open_exit</item>
+        <item name="android:activityCloseEnterAnimation">@anim/shared_x_axis_activity_close_enter_dynamic_color</item>
+        <item name="android:activityCloseExitAnimation">@anim/shared_x_axis_activity_close_exit</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/main/res/values/colors.xml b/main/res/values/colors.xml
index 75fd097..5cbcf07 100644
--- a/main/res/values/colors.xml
+++ b/main/res/values/colors.xml
@@ -15,7 +15,8 @@
     limitations under the License.
 -->
 
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@color/sud_system_accent*,@color/sud_system_neutral*">
 
     <!-- General colors -->
     <color name="sud_color_accent_dark">#ff448aff</color>
@@ -81,6 +82,19 @@
 
     <color name="sud_system_accent2_100">#FFE8DEF8</color>
 
+    <color name="sud_system_accent2_200">#A4CFC7</color>
+
+    <color name="sud_system_accent2_600">#3D665F</color>
+
+
+
+    <color name="sud_system_accent3_100">#ECDBFF</color>
+
+    <color name="sud_system_accent3_200">#CFBFEB</color>
+
+    <color name="sud_system_accent3_600">#64587F</color>
+
+
 
 
     <color name="sud_system_neutral1_0">#ffffff</color>
diff --git a/main/res/values/config.xml b/main/res/values/config.xml
index de724a3..79a2779 100644
--- a/main/res/values/config.xml
+++ b/main/res/values/config.xml
@@ -23,6 +23,9 @@
     <!-- Whether to use tablet layout -->
     <bool name="sudUseTabletLayout">false</bool>
 
+    <!-- Whether to make the footer button in footer bar align end -->
+    <bool name="suc_footer_bar_button_align_end">false</bool>
+
     <!-- Secondary font for use with headings, title, and other non-body text -->
     <string name="sudFontSecondary" translatable="false">google-sans</string>
     <string name="sudFontSecondaryText" translatable="false">google-sans-text</string>
diff --git a/main/res/values/dimens.xml b/main/res/values/dimens.xml
index d3f0d02..8626945 100644
--- a/main/res/values/dimens.xml
+++ b/main/res/values/dimens.xml
@@ -167,7 +167,7 @@
     <item name="sud_illustration_aspect_ratio" format="float" type="dimen">2.22</item>
 
     <!-- Footer Button-->
-    <dimen name="sud_glif_footer_button_text_size">14dp</dimen>
+    <dimen name="sud_glif_footer_button_text_size">14sp</dimen>
     <dimen name="sud_glif_primary_button_button_margin_start">0dp</dimen>
     <dimen name="sud_glif_secondary_button_button_margin_start">0dp</dimen>
 
@@ -209,7 +209,7 @@
     <!-- Footer Button Material You-->
     <dimen name="sud_footer_bar_button_radius_material_you">20dp</dimen>
     <dimen name="sud_glif_button_min_height_material_you">48dp</dimen>
-    <dimen name="sud_glif_footer_button_text_size_material_you">14dp</dimen>
+    <dimen name="sud_glif_footer_button_text_size_material_you">14sp</dimen>
 
     <dimen name="sud_glif_primary_button_button_margin_start_material_you">0dp</dimen>
 
@@ -310,4 +310,11 @@
     <!-- Set 0dp since we don't want shadow. -->
     <dimen name="sud_icon_uniformity_elevation">0dp</dimen>
 
+    <!-- Embedded Activity -->
+    <dimen name="sud_glif_footer_padding_start_embedded_activity">24dp</dimen>
+    <dimen name="sud_glif_footer_padding_end_embedded_activity">24dp</dimen>
+    <dimen name="sud_glif_margin_start_embedded_activity">24dp</dimen>
+    <dimen name="sud_glif_margin_end_embedded_activity">24dp</dimen>
+    <dimen name="sud_glif_header_title_margin_top_embedded_activity">24dp</dimen>
+    <dimen name="sud_header_title_size_embedded_activity">44sp</dimen>
 </resources>
diff --git a/main/res/values/layouts.xml b/main/res/values/layouts.xml
index 910965f..56f227d 100644
--- a/main/res/values/layouts.xml
+++ b/main/res/values/layouts.xml
@@ -35,8 +35,12 @@
 
     <item name="sud_glif_template" type="layout">@layout/sud_glif_template_compact</item>
 
+    <item name="sud_glif_embedded_template" type="layout">@layout/sud_glif_embedded_template_compact</item>
+
     <item name="sud_glif_list_template" type="layout">@layout/sud_glif_list_template_compact</item>
 
+    <item name="sud_glif_list_embedded_template" type="layout">@layout/sud_glif_list_embedded_template_compact</item>
+
     <!-- Ignore UnusedResources: can be used by clients -->
     <item name="sud_glif_blank_template" type="layout" tools:ignore="UnusedResources">@layout/sud_glif_blank_template_compact</item>
 
@@ -51,5 +55,7 @@
     <!-- Ignore UnusedResources: can be used by clients -->
 
     <item name="sud_glif_preference_template" type="layout">@layout/sud_glif_blank_template_compact</item>
+    <item name="sud_glif_preference_embedded_template" type="layout">@layout/sud_glif_blank_embedded_template_compact</item>
     <item name="sud_glif_recycler_template" type="layout">@layout/sud_glif_recycler_template_compact</item>
+    <item name="sud_glif_recycler_embedded_template" type="layout">@layout/sud_glif_recycler_embedded_template_compact</item>
 </resources>
diff --git a/main/res/values/styles.xml b/main/res/values/styles.xml
index e3b3489..6fe9550 100644
--- a/main/res/values/styles.xml
+++ b/main/res/values/styles.xml
@@ -196,6 +196,7 @@
         <item name="textAppearanceListItemSmall">@style/TextAppearance.SudGlifItemSummary</item>
         <item name="sucFooterBarButtonFontFamily">?attr/sudButtonFontFamily</item>
         <item name="sucFooterBarButtonCornerRadius">?attr/sudButtonCornerRadius</item>
+        <item name="sucFooterBarButtonAlignEnd">false</item>
         <item name="sucFooterBarButtonAllCaps">?attr/sudButtonAllCaps</item>
         <item name="sucFooterBarButtonColorControlHighlightRipple">?attr/colorAccent</item>
         <item name="sucFooterBarButtonHighlightAlpha">?attr/sudButtonHighlightAlpha</item>
@@ -294,6 +295,7 @@
         <item name="textAppearanceListItemSmall">@style/TextAppearance.SudGlifItemSummary</item>
         <item name="sucFooterBarButtonFontFamily">?attr/sudButtonFontFamily</item>
         <item name="sucFooterBarButtonCornerRadius">?attr/sudButtonCornerRadius</item>
+        <item name="sucFooterBarButtonAlignEnd">false</item>
         <item name="sucFooterBarButtonAllCaps">?attr/sudButtonAllCaps</item>
         <item name="sucFooterBarButtonColorControlHighlightRipple">?attr/colorAccent</item>
         <item name="sucFooterBarButtonHighlightAlpha">?attr/sudButtonHighlightAlpha</item>
@@ -402,6 +404,7 @@
         <item name="sucHeaderContainerMarginBottom">@dimen/sud_header_container_margin_bottom_material_you</item>
         <item name="sucFooterBarButtonFontFamily">@string/sudFontSecondaryMediumMaterialYou</item>
         <item name="sucGlifIconMarginTop">@dimen/sud_glif_icon_margin_top_material_you</item>
+        <item name="sucFooterBarButtonAlignEnd">@bool/suc_footer_bar_button_align_end</item>
         <item name="sudButtonCornerRadius">@dimen/sud_footer_bar_button_radius_material_you</item>
         <item name="sudButtonTertiaryGravity">center_horizontal</item>
         <item name="sudGlifIconSize">@dimen/sud_glif_icon_max_height_material_you</item>
@@ -433,6 +436,7 @@
         <item name="sucFooterBarPaddingStart">@dimen/sud_glif_footer_bar_padding_start_material_you</item>
         <item name="sucFooterBarPaddingEnd">@dimen/sud_glif_footer_bar_padding_end_material_you</item>
         <item name="sucFooterBarMinHeight">@dimen/sud_glif_footer_bar_min_height_material_you</item>
+        <item name="sucFooterBarButtonAlignEnd">@bool/suc_footer_bar_button_align_end</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="sucFooterBarButtonFontFamily">@string/sudFontSecondaryMediumMaterialYou</item>
diff --git a/main/src/com/google/android/setupdesign/GlifLayout.java b/main/src/com/google/android/setupdesign/GlifLayout.java
index 3f0d243..61d8329 100644
--- a/main/src/com/google/android/setupdesign/GlifLayout.java
+++ b/main/src/com/google/android/setupdesign/GlifLayout.java
@@ -37,6 +37,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
+import androidx.window.embedding.ActivityEmbeddingController;
 import com.google.android.setupcompat.PartnerCustomizationLayout;
 import com.google.android.setupcompat.partnerconfig.PartnerConfig;
 import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper;
@@ -285,7 +286,12 @@
   protected View onInflateTemplate(LayoutInflater inflater, @LayoutRes int template) {
     if (template == 0) {
       template = R.layout.sud_glif_template;
+      // if the activity is embedded should apply an embedded layout.
+      if (isEmbeddedActivityOnePaneEnabled(getContext())) {
+        template = R.layout.sud_glif_embedded_template;
+      }
     }
+
     return inflateTemplate(inflater, R.style.SudThemeGlif_Light, template);
   }
 
@@ -440,7 +446,7 @@
     updateBackground();
   }
 
-  /** @return True if this view uses {@link GlifPatternDrawable} as background. */
+  /** Returns true if this view uses {@link GlifPatternDrawable} as background. */
   public boolean isBackgroundPatterned() {
     return backgroundPatterned;
   }
@@ -484,6 +490,13 @@
             && PartnerConfigHelper.shouldApplyExtendedPartnerConfig(getContext()));
   }
 
+  /** Check if the one pane layout is enabled in embedded activity */
+  protected boolean isEmbeddedActivityOnePaneEnabled(Context context) {
+    return PartnerConfigHelper.isEmbeddedActivityOnePaneEnabled(context)
+        && ActivityEmbeddingController.getInstance(context)
+            .isActivityEmbedded(PartnerCustomizationLayout.lookupActivityFromContext(context));
+  }
+
   /** Updates the background color of this layout with the partner-customizable background color. */
   private void updateContentBackgroundColorWithPartnerConfig() {
     // If full dynamic color enabled which means this activity is running outside of setup
diff --git a/main/src/com/google/android/setupdesign/GlifListLayout.java b/main/src/com/google/android/setupdesign/GlifListLayout.java
index 89d0888..79b905c 100644
--- a/main/src/com/google/android/setupdesign/GlifListLayout.java
+++ b/main/src/com/google/android/setupdesign/GlifListLayout.java
@@ -91,6 +91,10 @@
   protected View onInflateTemplate(LayoutInflater inflater, int template) {
     if (template == 0) {
       template = R.layout.sud_glif_list_template;
+      // if the activity is embedded should apply an embedded layout.
+      if (isEmbeddedActivityOnePaneEnabled(getContext())) {
+        template = R.layout.sud_glif_list_embedded_template;
+      }
     }
     return super.onInflateTemplate(inflater, template);
   }
diff --git a/main/src/com/google/android/setupdesign/GlifPreferenceLayout.java b/main/src/com/google/android/setupdesign/GlifPreferenceLayout.java
index f235442..fb10515 100644
--- a/main/src/com/google/android/setupdesign/GlifPreferenceLayout.java
+++ b/main/src/com/google/android/setupdesign/GlifPreferenceLayout.java
@@ -99,6 +99,10 @@
   protected View onInflateTemplate(LayoutInflater inflater, int template) {
     if (template == 0) {
       template = R.layout.sud_glif_preference_template;
+      // if the activity is embedded should apply an embedded layout.
+      if (isEmbeddedActivityOnePaneEnabled(getContext())) {
+        template = R.layout.sud_glif_preference_embedded_template;
+      }
     }
     return super.onInflateTemplate(inflater, template);
   }
diff --git a/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java b/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java
index 87f871c..484ad50 100644
--- a/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java
+++ b/main/src/com/google/android/setupdesign/GlifRecyclerLayout.java
@@ -92,6 +92,10 @@
   protected View onInflateTemplate(LayoutInflater inflater, int template) {
     if (template == 0) {
       template = R.layout.sud_glif_recycler_template;
+      // if the activity is embedded should apply an embedded layout.
+      if (isEmbeddedActivityOnePaneEnabled(getContext())) {
+        template = R.layout.sud_glif_recycler_embedded_template;
+      }
     }
     return super.onInflateTemplate(inflater, template);
   }
diff --git a/main/src/com/google/android/setupdesign/transition/TransitionHelper.java b/main/src/com/google/android/setupdesign/transition/TransitionHelper.java
index ec2c480..5dd5f3d 100644
--- a/main/src/com/google/android/setupdesign/transition/TransitionHelper.java
+++ b/main/src/com/google/android/setupdesign/transition/TransitionHelper.java
@@ -127,6 +127,9 @@
   // TODO: Add new partner resource to determine which transition type would be apply.
   public static final int TRANSITION_CAPTIVE = 5;
 
+  /** Override the transition to a fade-through-from-right (or from-left for RTL locales). */
+  public static final int TRANSITION_FADE_THROUGH = 6;
+
   /**
    * No override. If this is specified as the transition, the enter/exit transition of the window
    * will not be set and keep original behavior.
@@ -154,11 +157,17 @@
   private TransitionHelper() {}
 
   /**
-   * Apply the transition for going forward which is decided by partner resource {@link
-   * PartnerConfig#CONFIG_TRANSITION_TYPE} and system property {@code setupwizard.transition_type}.
-   * The default transition that will be applied is {@link #TRANSITION_SLIDE}. The timing to apply
-   * the transition is going forward from the previous activity to this, or going forward from this
-   * activity to the next.
+   * Apply the transition for going forward which is decided by {@code Animation.SudWindowAnimation}
+   * theme if the API level is equal or higher than {@link android.os.Build.VERSION_CODES#U}.
+   *
+   * <p>Otherwise, apply the transition for going forward which is decided by partner resource
+   * {@link PartnerConfig#CONFIG_TRANSITION_TYPE} and system property {@code
+   * setupwizard.transition_type} if the API level is equal or lower than {@link
+   * android.os.Build.VERSION_CODES#T}. The default transition that will be applied is {@link
+   * #TRANSITION_SLIDE}.
+   *
+   * <p>The timing to apply the transition is going forward from the previous activity to this, or
+   * going forward from this activity to the next.
    *
    * <p>For example, in the flow below, the forward transitions will be applied to all arrows
    * pointing to the right. Previous screen --> This screen --> Next screen
@@ -199,15 +208,63 @@
   }
 
   /**
-   * Apply the transition for going forward. This is applied when going forward from the previous
-   * activity to this, or going forward from this activity to the next.
+   * Apply the transition for going forward which is decided by {@code Animation.SudWindowAnimation}
+   * theme if the API level is equal or higher than {@link android.os.Build.VERSION_CODES#U}.
+   *
+   * <p>Otherwise, apply the transition for going forward which is decided by the argument {@code
+   * transitionId} if the API level is equal or lower than {@link android.os.Build.VERSION_CODES#T}.
+   *
+   * <p>The timing to apply the transition is going forward from the previous activity to this, or
+   * going forward from this activity to the next.
+   */
+  @TargetApi(VERSION_CODES.LOLLIPOP)
+  public static void applyForwardTransition(Activity activity, @TransitionType int transitionId) {
+    applyForwardTransition(activity, transitionId, /* useClientTransitionSettings= */ false);
+  }
+
+  /**
+   * Apply the transition for going forward which is decided by {@code Animation.SudWindowAnimation}
+   * theme if the API level is equal or higher than {@link android.os.Build.VERSION_CODES#U}, and
+   * argument {@code useClientTransitionSettings} is false, and System property {@code
+   * suw_apply_glif_theme_controlled_transition} is true, and {@code TRANSITION_FADE_THOUGH}
+   * transition is not specified.
+   *
+   * <p>Otherwise, apply the transition for going forward which is decided by the argument {@code
+   * transitionId}, {@code shared_x_axis_activity} transition is used only when {@code
+   * TRANSITION_FADE_TROUGH} transition is specified, and System property {@code *
+   * suw_apply_glif_theme_controlled_transition} is true, and the API level is equal or more than
+   * {@link android.os.Build.VERSION_CODES#U}, other {@code transitionId} can be specified if the
+   * API level is equal or lower than {@link android.os.Build.VERSION_CODES#T}, or argument {@code
+   * useClientTransitionSettings} is true, or System property {@code
+   * suw_apply_glif_theme_controlled_transition} is false. The default transition that will be
+   * applied is {@link #TRANSITION_SLIDE}.
+   *
+   * <p>The timing to apply the transition is going forward from the previous activity to this, or
+   * going forward from this activity to the next.
    *
    * <p>For example, in the flow below, the forward transitions will be applied to all arrows
    * pointing to the right. Previous screen --> This screen --> Next screen
    */
   @TargetApi(VERSION_CODES.LOLLIPOP)
-  public static void applyForwardTransition(Activity activity, @TransitionType int transitionId) {
-    if (transitionId == TRANSITION_SLIDE) {
+  public static void applyForwardTransition(
+      Activity activity, @TransitionType int transitionId, boolean useClientTransitionSettings) {
+    if (BuildCompatUtils.isAtLeastU()
+        && !useClientTransitionSettings
+        && PartnerConfigHelper.isGlifThemeControlledTransitionApplied(activity)
+        && transitionId != TRANSITION_FADE_THROUGH) {
+      // Do nothing
+    } else if (BuildCompatUtils.isAtLeastU() && transitionId == TRANSITION_FADE_THROUGH) {
+      int openEnterTransition = R.anim.shared_x_axis_activity_open_enter;
+      if (PartnerConfigHelper.isGlifThemeControlledTransitionApplied(activity)) {
+        if (ThemeHelper.shouldApplyDynamicColor(activity)) {
+          openEnterTransition = R.anim.shared_x_axis_activity_open_enter_dynamic_color;
+        }
+        activity.overridePendingTransition(
+            openEnterTransition, R.anim.shared_x_axis_activity_open_exit);
+      } else {
+        activity.overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out);
+      }
+    } else if (transitionId == TRANSITION_SLIDE) {
       activity.overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out);
     } else if (transitionId == TRANSITION_FADE) {
       activity.overridePendingTransition(android.R.anim.fade_in, R.anim.sud_stay);
@@ -256,14 +313,21 @@
   }
 
   /**
-   * Apply the transition for going backward which is decided by partner resource {@link
-   * PartnerConfig#CONFIG_TRANSITION_TYPE} and system property {@code setupwizard.transition_type}.
-   * The default transition that will be applied is {@link #TRANSITION_SLIDE}. The timing to apply
-   * the transition is going backward from the next activity to this, or going backward from this
-   * activity to the previous.
+   * Apply the transition for going backward which is decided by {@code
+   * Animation.SudWindowAnimation} theme if the API level is equal or higher than {@link
+   * android.os.Build.VERSION_CODES#U}.
+   *
+   * <p>Otherwise, apply the transition for going backward which is decided by partner resource
+   * {@link PartnerConfig#CONFIG_TRANSITION_TYPE} and system property {@code
+   * setupwizard.transition_type} if the API level is equal or lower than {@link
+   * android.os.Build.VERSION_CODES#T}. The default transition that will be applied is {@link
+   * #TRANSITION_SLIDE}.
+   *
+   * <p>The timing to apply the transition is going backward from the next activity to this, or
+   * going backward from this activity to the previous.
    *
    * <p>For example, in the flow below, the backward transitions will be applied to all arrows
-   * pointing to the left. Previous screen <-- This screen <-- Next screen
+   * pointing to the left. Previous screen <-- This screen <-- Next screen.
    */
   @TargetApi(VERSION_CODES.LOLLIPOP)
   public static void applyBackwardTransition(Activity activity) {
@@ -301,15 +365,64 @@
   }
 
   /**
-   * Apply the transition for going backward. This is applied when going backward from the next
-   * activity to this, or going backward from this activity to the previous.
+   * Apply the transition for going backward which is decided by {@code
+   * Animation.SudWindowAnimation} theme if the API level is equal or higher than {@link
+   * android.os.Build.VERSION_CODES#U}.
+   *
+   * <p>Otherwise, apply the transition for going backward which is decided by the argument {@code
+   * transitionId} if the API level is equal or lower than {@link android.os.Build.VERSION_CODES#T}.
+   *
+   * <p>The timing to apply the transition is going backward from the next activity to this, or
+   * going backward from this activity to the previous.
+   */
+  @TargetApi(VERSION_CODES.LOLLIPOP)
+  public static void applyBackwardTransition(Activity activity, @TransitionType int transitionId) {
+    applyBackwardTransition(activity, transitionId, /* useClientTransitionSettings= */ false);
+  }
+
+  /**
+   * Apply the transition for going backward which is decided by {@code
+   * Animation.SudWindowAnimation} theme if the API level is equal or higher than {@link
+   * android.os.Build.VERSION_CODES#U}, and argument {@code useClientTransitionSettings} is false,
+   * and System property {@code suw_apply_glif_theme_controlled_transition} is true, and {@code
+   * TRANSITION_FADE_THOUGH} transition is not specified.
+   *
+   * <p>Otherwise, apply the transition for going backward which is decided by the argument {@code
+   * transitionId}, {@code shared_x_axis_activity} transition is used only when {@code
+   * TRANSITION_FADE_TROUGH} transition is specified, and System property {@code *
+   * suw_apply_glif_theme_controlled_transition} is true, and the API level is equal or more than
+   * {@link android.os.Build.VERSION_CODES#U}, other {@code transitionId} can be specified if the
+   * API level is equal or lower than {@link android.os.Build.VERSION_CODES#T}, or argument {@code
+   * useClientTransitionSettings} is true, or System property {@code
+   * suw_apply_glif_theme_controlled_transition} is false. The default transition that will be
+   * applied is {@link #TRANSITION_SLIDE}.
+   *
+   * <p>The timing to apply the transition is going backward from the next activity to this, or
+   * going backward from this activity to the previous.
    *
    * <p>For example, in the flow below, the backward transitions will be applied to all arrows
    * pointing to the left. Previous screen <-- This screen <-- Next screen
    */
   @TargetApi(VERSION_CODES.LOLLIPOP)
-  public static void applyBackwardTransition(Activity activity, @TransitionType int transitionId) {
-    if (transitionId == TRANSITION_SLIDE) {
+  public static void applyBackwardTransition(
+      Activity activity, @TransitionType int transitionId, boolean useClientTransitionSettings) {
+    if (BuildCompatUtils.isAtLeastU()
+        && !useClientTransitionSettings
+        && PartnerConfigHelper.isGlifThemeControlledTransitionApplied(activity)
+        && transitionId != TRANSITION_FADE_THROUGH) {
+      // Do nothing
+    } else if (BuildCompatUtils.isAtLeastU() && transitionId == TRANSITION_FADE_THROUGH) {
+      if (PartnerConfigHelper.isGlifThemeControlledTransitionApplied(activity)) {
+        int closeEnterTransition = R.anim.shared_x_axis_activity_close_enter;
+        if (ThemeHelper.shouldApplyDynamicColor(activity)) {
+          closeEnterTransition = R.anim.shared_x_axis_activity_close_enter_dynamic_color;
+        }
+        activity.overridePendingTransition(
+            closeEnterTransition, R.anim.shared_x_axis_activity_close_exit);
+      } else {
+        activity.overridePendingTransition(R.anim.sud_slide_back_in, R.anim.sud_slide_back_out);
+      }
+    } else if (transitionId == TRANSITION_SLIDE) {
       activity.overridePendingTransition(R.anim.sud_slide_back_in, R.anim.sud_slide_back_out);
     } else if (transitionId == TRANSITION_FADE) {
       activity.overridePendingTransition(R.anim.sud_stay, android.R.anim.fade_out);
@@ -352,8 +465,8 @@
       } else {
         Log.w(TAG, "This API is supported from Android Sdk " + VERSION_CODES.LOLLIPOP);
       }
+      // For TRANSITION_NO_OVERRIDE or other values, do not override the transition
     }
-    // For TRANSITION_NO_OVERRIDE or other values, do not override the transition
   }
 
   /**
diff --git a/main/src/com/google/android/setupdesign/util/Partner.java b/main/src/com/google/android/setupdesign/util/Partner.java
index 2052afb..ce0c0d2 100644
--- a/main/src/com/google/android/setupdesign/util/Partner.java
+++ b/main/src/com/google/android/setupdesign/util/Partner.java
@@ -36,9 +36,11 @@
 import androidx.annotation.DimenRes;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.Nullable;
+import androidx.annotation.RawRes;
 import androidx.annotation.RequiresApi;
 import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
+import java.io.InputStream;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
@@ -183,6 +185,17 @@
     return new ResourceEntry(context.getPackageName(), context.getResources(), id, false);
   }
 
+  /**
+   * Returns input stream for raw resources from overlay package provided by partners.
+   *
+   * @return an InputStream in the partner overlay's resources, if one is defined. Otherwise the
+   *     InputStream in resources from the original context is returned.
+   */
+  public static InputStream getRawResources(Context context, @RawRes int id) {
+    final ResourceEntry entry = getResourceEntry(context, id);
+    return entry.resources.openRawResource(entry.id);
+  }
+
   public static class ResourceEntry {
     public String packageName;
     public Resources resources;
diff --git a/main/src/com/google/android/setupdesign/util/ThemeHelper.java b/main/src/com/google/android/setupdesign/util/ThemeHelper.java
index 57a8278..4c349e4 100644
--- a/main/src/com/google/android/setupdesign/util/ThemeHelper.java
+++ b/main/src/com/google/android/setupdesign/util/ThemeHelper.java
@@ -201,7 +201,7 @@
     boolean isSetupFlow = WizardManagerHelper.isAnySetupWizard(activity.getIntent());
     boolean isDayNightEnabled = isSetupWizardDayNightEnabled(context);
 
-    if (isSetupFlow) {
+    if (isSetupFlow && !BuildCompatUtils.isAtLeastU()) {
       // return theme for inside setup flow
       resId =
           isDayNightEnabled