當布局沒有設置 background屬性的時候給其布局中加入一下代碼就是系統默認的水波紋效果
比如在recyclerview的item布局中,或者其他任意布局中。
android:background="?android:attr/selectableItemBackground" android:clickable="true" android:focusable="true"
當UI有要求布局、按鈕等的背景顏色時,使用ripple屬性來設置背景。
在drawable-v21中加入:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/feedback_sbmit_btn_color_press"//點擊時水波紋的顏色 > <item> <shape android:shape="rectangle">//水波紋矩形形態。 <solid android:color="@color/feedback_sbmit_btn_color_nor" />//正常狀態的顏色 <!--<corners android:radius="4dp" />--> </shape> </item>
//以下兩行表示當按鈕或布局不可用時的狀態,可根據自己的實際情況添加。如果只考慮點擊的話刪除以下兩行即可。 <item android:drawable="@drawable/input_green" android:state_enabled="true"/> <item android:drawable="@drawable/after_send_2x" android:state_enabled="false"/> </ripple>
由於ripple屬性是21以上的系統才有,所以還需要在5.0以下,也就是正常的drawable文件夾下創建同名文件,代碼如下:(就是正常selector的寫法)
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/feedback_sbmit_btn_color_press" android:state_pressed="true"/> <item android:drawable="@color/feedback_sbmit_btn_color_press" android:state_focused="true"/> <item android:drawable="@drawable/input_green" android:state_enabled="true"/> <item android:drawable="@drawable/input_green" android:state_pressed="false"/> <item android:drawable="@drawable/input_green" android:state_focused="false"/> <item android:drawable="@drawable/after_send_2x" android:state_enabled="false"/> </selector>
說明:android5.0以上的系統默認button、imageButton、radioButton、checkBox等默認獲取焦點的控件,在不設置background屬性的情況下就具有水波紋效果
設置該屬性后(比如顏色圖片等等),水波紋失效。想要達到效果,就在v21中使用ripple設置background。