這是效果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
參考: