From 1d07de9e9c4a6ad3601620fdd52fec82ce80a84b Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Fri, 16 Apr 2021 02:12:13 +0800 Subject: [PATCH] Update the new animation for collapsing toolbar Bug: 183496853 Test: visual verified 1) Settings -> Notifications -> Notification history 2) Observe and see if the new animation is applied Change-Id: Ic4b584b10a27c8e17075b044e659b5dc3e3fec87 --- .../collapsing_toolbar_base_layout.xml | 28 +++++++++++++------ .../res/values-night/themes.xml | 5 ++-- .../res/values/dimens.xml | 25 +++++++++++++++++ .../res/values/styles.xml | 11 ++------ .../res/values/themes.xml | 5 ++-- .../AdjustableToolbarLayout.java | 21 ++++++++++---- .../CollapsingToolbarBaseActivity.java | 6 ++-- .../SettingsTheme/res/values/themes.xml | 4 +++ 8 files changed, 76 insertions(+), 29 deletions(-) create mode 100644 packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/dimens.xml diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml index 62dfc51b5b30..579a6b203760 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml @@ -16,29 +16,39 @@ --> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> - diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/dimens.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/dimens.xml new file mode 100644 index 000000000000..f0cdaf603ba1 --- /dev/null +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/dimens.xml @@ -0,0 +1,25 @@ + + + + + 226dp + 270dp + 314dp + 174dp + 24dp + 24dp + \ No newline at end of file diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml index 1157a346d6ec..2a72a1ad65db 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml @@ -15,16 +15,11 @@ limitations under the License. --> - - - - \ No newline at end of file diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml index de545b0711e3..2e7a6a9181fe 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml @@ -15,8 +15,9 @@ limitations under the License. --> - diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java index e75a97857456..b3053ac76b55 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java @@ -19,6 +19,7 @@ package com.android.settingslib.collapsingtoolbar; import android.content.Context; import android.util.AttributeSet; import android.view.View; +import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -51,17 +52,24 @@ public class AdjustableToolbarLayout extends CollapsingToolbarLayout { initCollapsingToolbar(); } + @SuppressWarnings("RestrictTo") private void initCollapsingToolbar() { this.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { v.removeOnLayoutChangeListener(this); - final int count = getLineCount(); + final int count = getLineCountWithReflection(); if (count > TOOLBAR_MAX_LINE_NUMBER) { - setExpandedTitleTextAppearance(R.style.CollapsingToolbarTitle_MoreThanTwoLines); - } else { - setExpandedTitleTextAppearance(R.style.CollapsingToolbarTitle); + final ViewGroup.LayoutParams lp = getLayoutParams(); + lp.height = getResources() + .getDimensionPixelSize(R.dimen.toolbar_three_lines_height); + setLayoutParams(lp); + } else if (count == TOOLBAR_MAX_LINE_NUMBER) { + final ViewGroup.LayoutParams lp = getLayoutParams(); + lp.height = getResources() + .getDimensionPixelSize(R.dimen.toolbar_two_lines_height); + setLayoutParams(lp); } } }); @@ -73,9 +81,10 @@ public class AdjustableToolbarLayout extends CollapsingToolbarLayout { * drawn in a canvas and the text process is wrapped in a CollapsingTextHelper, the way we used * here is to get the line count from the CollapsingTextHelper via Java Reflection. */ - private int getLineCount() { + private int getLineCountWithReflection() { try { - final Field textHelperField = this.getClass().getDeclaredField("collapsingTextHelper"); + final Field textHelperField = + this.getClass().getSuperclass().getDeclaredField("collapsingTextHelper"); textHelperField.setAccessible(true); final Object textHelperObj = textHelperField.get(this); diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java index b29205d3bce2..f5641bd84619 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java @@ -78,16 +78,18 @@ public class CollapsingToolbarBaseActivity extends SettingsTransitionActivity { public void setTitle(CharSequence title) { if (mCollapsingToolbarLayout != null) { mCollapsingToolbarLayout.setTitle(title); + } else { + super.setTitle(title); } - super.setTitle(title); } @Override public void setTitle(int titleId) { if (mCollapsingToolbarLayout != null) { mCollapsingToolbarLayout.setTitle(getText(titleId)); + } else { + super.setTitle(titleId); } - super.setTitle(titleId); } @Override diff --git a/packages/SettingsLib/SettingsTheme/res/values/themes.xml b/packages/SettingsLib/SettingsTheme/res/values/themes.xml index 9c096d28c5c8..771fbc2e0b1f 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/themes.xml +++ b/packages/SettingsLib/SettingsTheme/res/values/themes.xml @@ -26,7 +26,11 @@ \ No newline at end of file