Android API 21及以上新增了ripple
標簽用來實現水波紋的效果。我們可以通過設置ripple
背景來實現一些View點擊效果。
該水波紋效果有兩種:一種是有界的(點擊后類似於一個矩形向四周擴展),一種是無界的(點擊后類似於一個圓形向四周擴展)。
系統上的實現效果如下:
有界效果:
在API 21以上使用,才有波紋效果;API 21以下使用只有變色效果,沒有波紋效果。
android:background="?android:attr/selectableItemBackground"
無界效果:
在API 21以上才能使用,API 21以下會報錯無法編譯,最小版本要設置為minSdkVersion 21
android:background="?android:attr/selectableItemBackgroundBorderless"
由於在API 21以下無法使用ripple 標簽來實現波紋效果,為了兼容低版本機型不出錯,我們需要做波紋效果適配。
可以在res目錄下新建一個drawable-v21的文件夾,然后在其中新建一個名為bg_ripple的文件:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@android:color/darker_gray"> <!--波紋顏色--> </ripple>
這里ripple中的color就是按下的水波紋顏色。
然后在drawable文件夾下也新建一個名為bg_ripple的文件:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/colorAccent" android:state_pressed="true" /> <item android:drawable="@android:color/transparent" /> </selector>
在布局中使用:
<TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bg_ripple"/>
參考鏈接: