使用智能阴影和半透明状态栏实现类似 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,当用户开始滚动时,您可以通过淡入淡出动画使其可见。然后当用户停止时,您使视图不可见并淡出视图。
如何实现类似于新 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,当用户开始滚动时,您可以通过淡入淡出动画使其可见。然后当用户停止时,您使视图不可见并淡出视图。