这是效果android
这其实就是一个curcular reveal effectgit
什么是curcular reveal effect ,github
它是Material Design当中的一个概念app
当您显示或隐藏一组UI元素时,curcular reveal 将为用户提供视觉连续性。布局
那么如何实现上面的效果呢?google
首先,咱们要导入material design官方库spa
implementation 'com.google.android.material:material:1.2.0-alpha01'
复制代码
而后咱们要更改咱们的主题,让它继承自material components theme。code
material components theme实际上是一系列主题,demo中继承的是component
style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"
复制代码
在咱们的xml布局中,添加CircularRevealCardView和FloatingActionButtonorm
CircularRevealCardView继承自MaterialCardView,实现了CirculareRevealWidget接口
同时将根布局改成CoordinatorLayout
而后咱们须要为CircularRevealWidget添加behavior
app:layout_behavior="@string/fab_transformation_sheet_behavior"
复制代码
咱们注意到在FAB点击后,页面除了右下角外是灰色的,这实际上是经过一个View,咱们称之为遮罩
<View
android:id="@+id/scrim"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_scrim"
android:visibility="invisible"
app:layout_behavior="@string/fab_transformation_scrim_behavior" />
复制代码
注意到咱们在它内部也定义了一个behavior
总结一下:
当FloatingActionButton是展开的时候,拥有该behavior的sheet将会显示。
一个sheet一般宽度和高度比屏幕小,同时有elevatioin,也许还会有一个遮罩(scrim)在下面
当FloatingActionButton是展开的时候,拥有该behavior的scrim将会显示
这两个behavior的不一样在于sheet是有一个水波纹效果,scrim是瞬间展开的
至此,咱们就实现了咱们想要的效果,具体代码能够参考github
参考: