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:
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user