目前我所知道的至少有三種可以實(shí)現(xiàn)點(diǎn)擊水波紋的效果
第一種:安卓自帶的方法
在安卓中有自帶的一種屬性,可以實(shí)現(xiàn)水波紋的效果朋贬,就是在所需要點(diǎn)擊的控件屬性加上如下代碼:
android:background="?attr/selectableItemBackground"
這種水波紋效果只適用于5.0以后的安卓系統(tǒng)
第二種:編寫ripple文件
在res文件先創(chuàng)建drawable-v21文件夾果港,并在文件夾下創(chuàng)建ripple文件您旁,命名符合安卓命名規(guī)范就行了蛔六,如下圖帕胆,我命名為bg_white:
Paste_Image.png
接下來我們看看ripple文件該怎么寫,其實(shí)就是寫個(gè)shape朝捆,給個(gè)顏色值,如下圖:
Paste_Image.png
在xml文件中調(diào)用控件的background屬性:
android:background="@drawable/bg_white"
如下圖:
Paste_Image.png
需要注意的是懒豹,需要在drawable文件夾下創(chuàng)建同名的bg_white.xml文件芙盘,可以是selector或者shape文件,這個(gè)是為了兼顧5.0以下的版本的點(diǎn)擊效果脸秽,如果沒有的話儒老,在5.0以下的版本在點(diǎn)擊時(shí)候會(huì)報(bào)錯(cuò)
這一種也是只能在5.0以后系統(tǒng)才有效
第三種:github別人寫的控件
github地址:https://github.com/balysv/material-ripple
使用步驟:
1.添加依賴:
compile 'com.balysv:material-ripple:1.0.2'
2.包裹你要點(diǎn)擊的布局
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button inside a ripple"/>
</com.balysv.materialripple.MaterialRippleLayout>
其中提供了如下屬性,可以設(shè)置你水波紋時(shí)間记餐,水波紋顏色驮樊,等等效果
Paste_Image.png
值得一說的是這種方式適配范圍較管,可以適配到4.0以上的(4.0一下沒測試過)剥扣,就是在寫布局時(shí)候都要嵌套一層巩剖,會(huì)比較繁瑣铝穷。