Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e665e275 authored by Mill Chen's avatar Mill Chen Committed by Android (Google) Code Review
Browse files

Merge "Update dynamic height adjusting" into sc-dev

parents 8938a91f 4bc5bdeb
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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"
+2 −6
Original line number Diff line number Diff line
@@ -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>
 No newline at end of file
+3 −69
Original line number Diff line number Diff line
@@ -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 (savedInstanceState != null) {
            mIsToolbarCollapsed = savedInstanceState.getBoolean(KEY_IS_TOOLBAR_COLLAPSED);
        if (mCollapsingToolbarLayout != null) {
            mCollapsingToolbarLayout.setLineSpacingMultiplier(TOOLBAR_LINE_SPACING_MULTIPLIER);
        }

        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);
                }
            }
        });
    }
}
+4 −64
Original line number Diff line number Diff line
@@ -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);
                }
            }
        });
    }
}