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
This commit is contained in:
parent
aa36363f72
commit
1d07de9e9c
@ -16,29 +16,39 @@
|
|||||||
-->
|
-->
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/content_parent"
|
android:id="@+id/content_parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/app_bar"
|
android:id="@+id/app_bar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="180dp"
|
android:layout_height="wrap_content"
|
||||||
|
android:fitsSystemWindows="true"
|
||||||
|
android:outlineAmbientShadowColor="@android:color/transparent"
|
||||||
|
android:outlineSpotShadowColor="@android:color/transparent"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
android:theme="@style/Theme.CollapsingToolbar.Settings">
|
android:theme="@style/Theme.CollapsingToolbar.Settings">
|
||||||
|
|
||||||
<com.android.settingslib.collapsingtoolbar.AdjustableToolbarLayout
|
<com.android.settingslib.collapsingtoolbar.AdjustableToolbarLayout
|
||||||
android:id="@+id/collapsing_toolbar"
|
android:id="@+id/collapsing_toolbar"
|
||||||
android:background="?android:attr/colorPrimary"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="@dimen/toolbar_one_line_height"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
app:contentScrim="?androidprv:attr/colorSurfaceHeader"
|
||||||
app:maxLines="3"
|
app:maxLines="3"
|
||||||
app:contentScrim="?android:attr/colorPrimary"
|
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
|
||||||
|
app:scrimAnimationDuration="50"
|
||||||
|
app:scrimVisibleHeightTrigger="@dimen/scrim_visible_height_trigger"
|
||||||
|
app:statusBarScrim="@empty"
|
||||||
|
app:titleCollapseMode="fade"
|
||||||
app:collapsedTitleTextAppearance="@style/CollapsingToolbarTitle.Collapsed"
|
app:collapsedTitleTextAppearance="@style/CollapsingToolbarTitle.Collapsed"
|
||||||
app:statusBarScrim="?android:attr/colorPrimary"
|
app:expandedTitleTextAppearance="@style/CollapsingToolbarTitle.Expanded"
|
||||||
app:layout_scrollFlags="scroll|exitUntilCollapsed"
|
app:expandedTitleMarginStart="@dimen/expanded_title_margin_start"
|
||||||
app:expandedTitleMarginStart="18dp"
|
app:expandedTitleMarginEnd="@dimen/expanded_title_margin_end"
|
||||||
app:expandedTitleMarginEnd="18dp"
|
|
||||||
app:toolbarId="@id/action_bar">
|
app:toolbarId="@id/action_bar">
|
||||||
|
|
||||||
<Toolbar
|
<Toolbar
|
||||||
|
@ -15,8 +15,9 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<style name="Theme.CollapsingToolbar.Settings"
|
<style name="Theme.CollapsingToolbar.Settings" parent="@style/Theme.MaterialComponents.DayNight">
|
||||||
parent="@style/Theme.MaterialComponents.DayNight">
|
<item name="elevationOverlayEnabled">true</item>
|
||||||
|
<item name="elevationOverlayColor">?attr/colorPrimary</item>
|
||||||
<item name="colorPrimary">@*android:color/primary_dark_device_default_settings</item>
|
<item name="colorPrimary">@*android:color/primary_dark_device_default_settings</item>
|
||||||
<item name="colorAccent">@*android:color/accent_device_default_dark</item>
|
<item name="colorAccent">@*android:color/accent_device_default_dark</item>
|
||||||
</style>
|
</style>
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2021 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>
|
||||||
|
<!-- 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>
|
@ -15,16 +15,11 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<style name="CollapsingToolbarTitle.Collapsed"
|
<style name="CollapsingToolbarTitle.Collapsed" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
|
||||||
parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
|
|
||||||
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
|
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="CollapsingToolbarTitle" parent="CollapsingToolbarTitle.Collapsed">
|
<style name="CollapsingToolbarTitle.Expanded" parent="CollapsingToolbarTitle.Collapsed">
|
||||||
<item name="android:textSize">36sp</item>
|
<item name="android:textSize">36dp</item>
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="CollapsingToolbarTitle.MoreThanTwoLines">
|
|
||||||
<item name="android:textSize">24sp</item>
|
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
@ -15,8 +15,9 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<style name="Theme.CollapsingToolbar.Settings"
|
<style name="Theme.CollapsingToolbar.Settings" parent="@style/Theme.MaterialComponents.DayNight">
|
||||||
parent="@style/Theme.MaterialComponents.DayNight">
|
<item name="elevationOverlayEnabled">true</item>
|
||||||
|
<item name="elevationOverlayColor">?attr/colorPrimary</item>
|
||||||
<item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
|
<item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
|
||||||
<item name="colorAccent">@*android:color/accent_device_default_light</item>
|
<item name="colorAccent">@*android:color/accent_device_default_light</item>
|
||||||
</style>
|
</style>
|
||||||
|
@ -19,6 +19,7 @@ package com.android.settingslib.collapsingtoolbar;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@ -51,17 +52,24 @@ public class AdjustableToolbarLayout extends CollapsingToolbarLayout {
|
|||||||
initCollapsingToolbar();
|
initCollapsingToolbar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("RestrictTo")
|
||||||
private void initCollapsingToolbar() {
|
private void initCollapsingToolbar() {
|
||||||
this.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
this.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLayoutChange(View v, int left, int top, int right, int bottom,
|
public void onLayoutChange(View v, int left, int top, int right, int bottom,
|
||||||
int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
||||||
v.removeOnLayoutChangeListener(this);
|
v.removeOnLayoutChangeListener(this);
|
||||||
final int count = getLineCount();
|
final int count = getLineCountWithReflection();
|
||||||
if (count > TOOLBAR_MAX_LINE_NUMBER) {
|
if (count > TOOLBAR_MAX_LINE_NUMBER) {
|
||||||
setExpandedTitleTextAppearance(R.style.CollapsingToolbarTitle_MoreThanTwoLines);
|
final ViewGroup.LayoutParams lp = getLayoutParams();
|
||||||
} else {
|
lp.height = getResources()
|
||||||
setExpandedTitleTextAppearance(R.style.CollapsingToolbarTitle);
|
.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
|
* 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.
|
* here is to get the line count from the CollapsingTextHelper via Java Reflection.
|
||||||
*/
|
*/
|
||||||
private int getLineCount() {
|
private int getLineCountWithReflection() {
|
||||||
try {
|
try {
|
||||||
final Field textHelperField = this.getClass().getDeclaredField("collapsingTextHelper");
|
final Field textHelperField =
|
||||||
|
this.getClass().getSuperclass().getDeclaredField("collapsingTextHelper");
|
||||||
textHelperField.setAccessible(true);
|
textHelperField.setAccessible(true);
|
||||||
final Object textHelperObj = textHelperField.get(this);
|
final Object textHelperObj = textHelperField.get(this);
|
||||||
|
|
||||||
|
@ -78,16 +78,18 @@ public class CollapsingToolbarBaseActivity extends SettingsTransitionActivity {
|
|||||||
public void setTitle(CharSequence title) {
|
public void setTitle(CharSequence title) {
|
||||||
if (mCollapsingToolbarLayout != null) {
|
if (mCollapsingToolbarLayout != null) {
|
||||||
mCollapsingToolbarLayout.setTitle(title);
|
mCollapsingToolbarLayout.setTitle(title);
|
||||||
|
} else {
|
||||||
|
super.setTitle(title);
|
||||||
}
|
}
|
||||||
super.setTitle(title);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTitle(int titleId) {
|
public void setTitle(int titleId) {
|
||||||
if (mCollapsingToolbarLayout != null) {
|
if (mCollapsingToolbarLayout != null) {
|
||||||
mCollapsingToolbarLayout.setTitle(getText(titleId));
|
mCollapsingToolbarLayout.setTitle(getText(titleId));
|
||||||
|
} else {
|
||||||
|
super.setTitle(titleId);
|
||||||
}
|
}
|
||||||
super.setTitle(titleId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -26,7 +26,11 @@
|
|||||||
|
|
||||||
<!-- Using in SubSettings page including injected settings page -->
|
<!-- Using in SubSettings page including injected settings page -->
|
||||||
<style name="Theme.SubSettingsBase" parent="Theme.SettingsBase">
|
<style name="Theme.SubSettingsBase" parent="Theme.SettingsBase">
|
||||||
|
<!-- Suppress the built-in action bar -->
|
||||||
<item name="android:windowActionBar">false</item>
|
<item name="android:windowActionBar">false</item>
|
||||||
<item name="android:windowNoTitle">true</item>
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<!-- Set up edge-to-edge configuration for top app bar -->
|
||||||
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user