Tweak the layout of top app bar

- Update the color of content scrim
- Dynamically change the height of collapsing toolbar according to the
  line count of title
- Fix the jank problem of collapsing toolbar

Fixes: 184615642
Fixes: 185003521
Fixes: 182770567
Fixes: 184209747
Test: visual verified
Change-Id: I78c517eb9bec0b85997085970007481d1a4ef7d3
diff --git a/res/layout/settings_collapsing_base_layout.xml b/res/layout/settings_collapsing_base_layout.xml
index ca9c132..97d249c 100644
--- a/res/layout/settings_collapsing_base_layout.xml
+++ b/res/layout/settings_collapsing_base_layout.xml
@@ -29,22 +29,25 @@
         android:fitsSystemWindows="true"
         android:outlineAmbientShadowColor="@android:color/transparent"
         android:outlineSpotShadowColor="@android:color/transparent"
-        android:background="?android:attr/colorPrimary"
+        android:background="@android:color/transparent"
         android:theme="@style/Theme.CollapsingToolbar.Settings">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             android:id="@+id/collapsing_toolbar"
             android:layout_width="match_parent"
-            android:layout_height="226dp"
+            android:layout_height="@dimen/toolbar_one_line_height"
+            android:clipToPadding="false"
+            app:contentScrim="@color/color_surface_header"
             app:maxLines="3"
             app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
-            app:scrimAnimationDuration="150"
-            app:scrimVisibleHeightTrigger="174dp"
+            app:scrimAnimationDuration="50"
+            app:scrimVisibleHeightTrigger="@dimen/scrim_visible_height_trigger"
             app:statusBarScrim="@empty"
             app:titleCollapseMode="fade"
             app:collapsedTitleTextAppearance="@style/ToolbarText.Collapsed"
-            app:expandedTitleMarginStart="18dp"
-            app:expandedTitleMarginEnd="16dp"
+            app:expandedTitleTextAppearance="@style/ToolbarText.Expanded"
+            app:expandedTitleMarginStart="@dimen/expanded_title_margin_start"
+            app:expandedTitleMarginEnd="@dimen/expanded_title_margin_end"
             app:toolbarId="@id/action_bar">
 
             <Toolbar
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
index b2f9a89..168fd0d 100644
--- a/res/values-night/colors.xml
+++ b/res/values-night/colors.xml
@@ -40,5 +40,7 @@
     <color name="palette_list_color_purple">@color/palette_list_dark_mode_color_purple</color>
     <color name="palette_list_color_gray">@color/palette_list_dark_mode_color_gray</color>
     <color name="gestures_setting_background_color">@android:color/black</color>
+
+    <color name="color_surface_header">@*android:color/surface_header_dark</color>
 </resources>
 
diff --git a/res/values/colors.xml b/res/values/colors.xml
index e107b65..736a7db 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -192,4 +192,7 @@
 
     <!-- Google colors -->
     <color name="google_grey_700">#5f6368</color>
+
+    <!-- Top app bar colors -->
+    <color name="color_surface_header">@*android:color/surface_header_light</color>
 </resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 304feb8..6047092 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -446,4 +446,12 @@
     <dimen name="chartview_trapezoid_radius">2dp</dimen>
     <dimen name="chartview_trapezoid_margin_start">1dp</dimen>
     <dimen name="chartview_trapezoid_margin_bottom">2dp</dimen>
+
+    <!-- Collapsing toolbar layout dimensions -->
+    <dimen name="toolbar_one_line_height">226dp</dimen>
+    <dimen name="toolbar_two_lines_height">270dp</dimen>
+    <dimen name="toolbar_three_lines_height">314dp</dimen>
+    <dimen name="scrim_visible_height_trigger">174dp</dimen>
+    <dimen name="expanded_title_margin_start">24dp</dimen>
+    <dimen name="expanded_title_margin_end">24dp</dimen>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 735cc15..31f44dd 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -781,7 +781,7 @@
         <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
     </style>
 
-    <style name="HomepageTitleText" parent="ToolbarText">
+    <style name="HomepageTitleText" parent="ToolbarText.Expanded">
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>
         <item name="android:layout_marginBottom">@dimen/homepage_title_margin_bottom</item>
@@ -874,6 +874,6 @@
     </style>
 
     <style name="ToolbarText.Collapsed" parent="CollapsingToolbarTitle.Collapsed"/>
-    <style name="ToolbarText" parent="CollapsingToolbarTitle"/>
+    <style name="ToolbarText.Expanded" parent="CollapsingToolbarTitle"/>
     <style name="ToolbarText.MoreThanTwoLines" parent="CollapsingToolbarTitle.MoreThanTwoLines"/>
 </resources>
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index cc78fa6..569e480 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -218,10 +218,15 @@
                 v.removeOnLayoutChangeListener(this);
                 final int count = getLineCount();
                 if (count > TOOLBAR_MAX_LINE_NUMBER) {
-                    mCollapsingToolbarLayout
-                            .setExpandedTitleTextAppearance(R.style.ToolbarText_MoreThanTwoLines);
-                } else {
-                    mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ToolbarText);
+                    ViewGroup.LayoutParams lp = mCollapsingToolbarLayout.getLayoutParams();
+                    lp.height = getResources()
+                            .getDimensionPixelSize(R.dimen.toolbar_three_lines_height);
+                    mCollapsingToolbarLayout.setLayoutParams(lp);
+                } else if (count == TOOLBAR_MAX_LINE_NUMBER) {
+                    ViewGroup.LayoutParams lp = mCollapsingToolbarLayout.getLayoutParams();
+                    lp.height =
+                            getResources().getDimensionPixelSize(R.dimen.toolbar_two_lines_height);
+                    mCollapsingToolbarLayout.setLayoutParams(lp);
                 }
             }
         });