使用智能阴影和半透明状态栏实现类似 Gmail 应用程序的工具栏

Implement toolbar like Gmail app with smart shadow and translucent statusbar

如何实现类似于新 Gmail 应用程序的工具栏,该工具栏是半透明的,与状态栏颜色相同,并且仅在滚动时获得阴影。

我已将屏幕截图上传到此处:gmail

这是我的主要 activity 布局的代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ima_default_background"
android:fitsSystemWindows="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

<!--the frame I load my fragments in-->
<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<!--toolbar frame-->
<FrameLayout
    android:id="@+id/toolbar_frame_layout"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize">

    <net.karthikraj.shapesimage.ShapesImage
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@color/tool_bar_color"
        app:shapeDrawable="@drawable/one_rounded_rectangle_white_24dp" />

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        app:layout_scrollFlags="scroll|enterAlways"
        app:titleTextAppearance="@style/ActionBar.nameText" />
</FrameLayout>


<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/navigation"
    style="@style/navigation_bottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:foreground="?attr/selectableItemBackground"
    app:itemIconTint="@color/bottom_nav_color_selector"
    app:itemTextAppearanceActive="@style/BottomNavigation.ActiveItemTextAppearance"
    app:itemTextColor="@color/bottom_nav_color_selector"
    app:labelVisibilityMode="selected"
    app:menu="@menu/navigation" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

我不确定是否已经有任何类型的本机实现可用于此。我能想到的一种方法是在你的工具栏下方添加另一个视图,灰色背景高度约为 1dp,然后实现这个滚动监听器 .

为视图指定一个 ID,当用户开始滚动时,您可以通过淡入淡出动画使其可见。然后当用户停止时,您使视图不可见并淡出视图。