Merge "Update dynamic height adjusting" into sc-dev am: e665e27525

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15187824

Change-Id: I5822ec7cd641675c6ddce686d1978961cbc9c7c4
This commit is contained in:
Mill Chen
2021-07-02 19:04:31 +00:00
committed by Automerger Merge Worker
4 changed files with 13 additions and 141 deletions

View File

@@ -36,13 +36,15 @@
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_one_line_height"
android:layout_height="@dimen/settingslib_toolbar_layout_height"
android:clipToPadding="false"
app:forceApplySystemWindowInsetTop="true"
app:extraMultilineHeightEnabled="true"
app:contentScrim="?androidprv:attr/colorSurfaceHeader"
app:maxLines="3"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:scrimAnimationDuration="50"
app:scrimVisibleHeightTrigger="@dimen/scrim_visible_height_trigger"
app:scrimVisibleHeightTrigger="@dimen/settingslib_scrim_visible_height_trigger"
app:statusBarScrim="@null"
app:titleCollapseMode="fade"
app:collapsedTitleTextAppearance="@style/CollapsingToolbarTitle.Collapsed"

View File

@@ -16,12 +16,8 @@
-->
<resources>
<!-- Collapsing toolbar layout dimensions -->
<dimen name="toolbar_one_line_height">216dp</dimen>
<dimen name="toolbar_two_lines_height">260dp</dimen>
<dimen name="toolbar_three_lines_height">304dp</dimen>
<dimen name="scrim_visible_height_trigger">174dp</dimen>
<dimen name="scrim_visible_height_trigger_two_lines">218dp</dimen>
<dimen name="scrim_visible_height_trigger_three_lines">262dp</dimen>
<dimen name="settingslib_toolbar_layout_height">179dp</dimen>
<dimen name="settingslib_scrim_visible_height_trigger">137dp</dimen>
<dimen name="expanded_title_margin_start">24dp</dimen>
<dimen name="expanded_title_margin_end">24dp</dimen>
</resources>

View File

@@ -36,19 +36,14 @@ import com.google.android.material.resources.TextAppearanceConfig;
* A base Activity that has a collapsing toolbar layout is used for the activities intending to
* enable the collapsing toolbar function.
*/
public class CollapsingToolbarBaseActivity extends FragmentActivity implements
AppBarLayout.OnOffsetChangedListener {
public class CollapsingToolbarBaseActivity extends FragmentActivity {
private static final int TOOLBAR_MAX_LINE_NUMBER = 2;
private static final int FULLY_EXPANDED_OFFSET = 0;
private static final float TOOLBAR_LINE_SPACING_MULTIPLIER = 1.1f;
private static final String KEY_IS_TOOLBAR_COLLAPSED = "is_toolbar_collapsed";
@Nullable
private CollapsingToolbarLayout mCollapsingToolbarLayout;
@Nullable
private AppBarLayout mAppBarLayout;
private boolean mIsToolbarCollapsed;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -58,14 +53,9 @@ public class CollapsingToolbarBaseActivity extends FragmentActivity implements
super.setContentView(R.layout.collapsing_toolbar_base_layout);
mCollapsingToolbarLayout = findViewById(R.id.collapsing_toolbar);
mAppBarLayout = findViewById(R.id.app_bar);
if (mAppBarLayout != null) {
mAppBarLayout.addOnOffsetChangedListener(this);
if (mCollapsingToolbarLayout != null) {
mCollapsingToolbarLayout.setLineSpacingMultiplier(TOOLBAR_LINE_SPACING_MULTIPLIER);
}
if (savedInstanceState != null) {
mIsToolbarCollapsed = savedInstanceState.getBoolean(KEY_IS_TOOLBAR_COLLAPSED);
}
initCollapsingToolbar();
disableCollapsingToolbarLayoutScrollingBehavior();
final Toolbar toolbar = findViewById(R.id.action_bar);
@@ -125,23 +115,6 @@ public class CollapsingToolbarBaseActivity extends FragmentActivity implements
return true;
}
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {
if (offset == FULLY_EXPANDED_OFFSET) {
mIsToolbarCollapsed = false;
} else {
mIsToolbarCollapsed = true;
}
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
if (isChangingConfigurations()) {
outState.putBoolean(KEY_IS_TOOLBAR_COLLAPSED, mIsToolbarCollapsed);
}
}
/**
* Returns an instance of collapsing toolbar.
*/
@@ -174,43 +147,4 @@ public class CollapsingToolbarBaseActivity extends FragmentActivity implements
});
params.setBehavior(behavior);
}
@SuppressWarnings("RestrictTo")
private void initCollapsingToolbar() {
if (mCollapsingToolbarLayout == null || mAppBarLayout == null) {
return;
}
mCollapsingToolbarLayout.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);
if (mIsToolbarCollapsed) {
return;
}
final int count = mCollapsingToolbarLayout.getLineCount();
if (count > TOOLBAR_MAX_LINE_NUMBER) {
final ViewGroup.LayoutParams lp = mCollapsingToolbarLayout.getLayoutParams();
lp.height = getResources()
.getDimensionPixelSize(R.dimen.toolbar_three_lines_height);
mCollapsingToolbarLayout.setScrimVisibleHeightTrigger(
getResources().getDimensionPixelSize(
R.dimen.scrim_visible_height_trigger_three_lines));
mCollapsingToolbarLayout.setLayoutParams(lp);
mCollapsingToolbarLayout
.setLineSpacingMultiplier(TOOLBAR_LINE_SPACING_MULTIPLIER);
} else if (count == TOOLBAR_MAX_LINE_NUMBER) {
final ViewGroup.LayoutParams lp = mCollapsingToolbarLayout.getLayoutParams();
lp.height = getResources()
.getDimensionPixelSize(R.dimen.toolbar_two_lines_height);
mCollapsingToolbarLayout.setScrimVisibleHeightTrigger(
getResources().getDimensionPixelSize(
R.dimen.scrim_visible_height_trigger_two_lines));
mCollapsingToolbarLayout.setLayoutParams(lp);
mCollapsingToolbarLayout
.setLineSpacingMultiplier(TOOLBAR_LINE_SPACING_MULTIPLIER);
}
}
});
}
}

View File

@@ -34,12 +34,9 @@ import com.google.android.material.appbar.CollapsingToolbarLayout;
/**
* A base fragment that has a collapsing toolbar layout for enabling the collapsing toolbar design.
*/
public abstract class CollapsingToolbarBaseFragment extends Fragment implements
AppBarLayout.OnOffsetChangedListener {
public abstract class CollapsingToolbarBaseFragment extends Fragment {
private static final int TOOLBAR_MAX_LINE_NUMBER = 2;
private static final int FULLY_EXPANDED_OFFSET = 0;
private static final String KEY_IS_TOOLBAR_COLLAPSED = "is_toolbar_collapsed";
private static final float TOOLBAR_LINE_SPACING_MULTIPLIER = 1.1f;
@Nullable
private CoordinatorLayout mCoordinatorLayout;
@@ -51,7 +48,6 @@ public abstract class CollapsingToolbarBaseFragment extends Fragment implements
private Toolbar mToolbar;
@NonNull
private FrameLayout mContentFrameLayout;
private boolean mIsToolbarCollapsed;
@Nullable
@Override
@@ -62,13 +58,9 @@ public abstract class CollapsingToolbarBaseFragment extends Fragment implements
mCoordinatorLayout = view.findViewById(R.id.content_parent);
mCollapsingToolbarLayout = view.findViewById(R.id.collapsing_toolbar);
mAppBarLayout = view.findViewById(R.id.app_bar);
if (mAppBarLayout != null) {
mAppBarLayout.addOnOffsetChangedListener(this);
if (mCollapsingToolbarLayout != null) {
mCollapsingToolbarLayout.setLineSpacingMultiplier(TOOLBAR_LINE_SPACING_MULTIPLIER);
}
if (savedInstanceState != null) {
mIsToolbarCollapsed = savedInstanceState.getBoolean(KEY_IS_TOOLBAR_COLLAPSED);
}
initCollapsingToolbar();
disableCollapsingToolbarLayoutScrollingBehavior();
mToolbar = view.findViewById(R.id.action_bar);
mContentFrameLayout = view.findViewById(R.id.content_frame);
@@ -82,23 +74,6 @@ public abstract class CollapsingToolbarBaseFragment extends Fragment implements
requireActivity().setActionBar(mToolbar);
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
if (getActivity().isChangingConfigurations()) {
outState.putBoolean(KEY_IS_TOOLBAR_COLLAPSED, mIsToolbarCollapsed);
}
}
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {
if (offset == FULLY_EXPANDED_OFFSET) {
mIsToolbarCollapsed = false;
} else {
mIsToolbarCollapsed = true;
}
}
/**
* Return an instance of CoordinatorLayout.
*/
@@ -147,39 +122,4 @@ public abstract class CollapsingToolbarBaseFragment extends Fragment implements
});
params.setBehavior(behavior);
}
@SuppressWarnings("RestrictTo")
private void initCollapsingToolbar() {
if (mCollapsingToolbarLayout == null || mAppBarLayout == null) {
return;
}
mCollapsingToolbarLayout.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);
if (mIsToolbarCollapsed) {
return;
}
final int count = mCollapsingToolbarLayout.getLineCount();
if (count > TOOLBAR_MAX_LINE_NUMBER) {
final ViewGroup.LayoutParams lp = mCollapsingToolbarLayout.getLayoutParams();
lp.height = getResources()
.getDimensionPixelSize(R.dimen.toolbar_three_lines_height);
mCollapsingToolbarLayout.setScrimVisibleHeightTrigger(
getResources().getDimensionPixelSize(
R.dimen.scrim_visible_height_trigger_three_lines));
mCollapsingToolbarLayout.setLayoutParams(lp);
} else if (count == TOOLBAR_MAX_LINE_NUMBER) {
final ViewGroup.LayoutParams lp = mCollapsingToolbarLayout.getLayoutParams();
lp.height = getResources()
.getDimensionPixelSize(R.dimen.toolbar_two_lines_height);
mCollapsingToolbarLayout.setScrimVisibleHeightTrigger(
getResources().getDimensionPixelSize(
R.dimen.scrim_visible_height_trigger_two_lines));
mCollapsingToolbarLayout.setLayoutParams(lp);
}
}
});
}
}