Android API 21及以上新增了ripple
標籤用來實現水波紋的效果。咱們能夠經過設置ripple
背景來實現一些View點擊效果。android
該水波紋效果有兩種:一種是有界的(點擊後相似於一個矩形向四周擴展),一種是無界的(點擊後相似於一個圓形向四周擴展)。app
系統上的實現效果以下:less
有界效果:
在API 21以上使用,纔有波紋效果;API 21如下使用只有變色效果,沒有波紋效果。佈局
android:background="?android:attr/selectableItemBackground"
無界效果:
在API 21以上才能使用,API 21如下會報錯沒法編譯,最小版本要設置爲minSdkVersion 21
spa
android:background="?android:attr/selectableItemBackgroundBorderless"
因爲在API 21如下沒法使用ripple 標籤來實現波紋效果,爲了兼容低版本機型不出錯,咱們須要作波紋效果適配。code
能夠在res目錄下新建一個drawable-v21的文件夾,而後在其中新建一個名爲bg_ripple的文件:xml
<?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就是按下的水波紋顏色。blog
而後在drawable文件夾下也新建一個名爲bg_ripple的文件:ip
<?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>
在佈局中使用:utf-8
<TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bg_ripple"/>
參考連接: