ripple實現點選時的水波紋效果
阿新 • • 發佈:2018-12-15
前言
在看網易雲音樂播放器的時候,覺得它在選擇音樂時候的波紋效果很好看,就想要模仿這種效果。然後在網上找了一下這方面的文章,最後被我發現了ripple,用ripple就能很好地實現這種波紋效果。所以用這篇文章記錄下ripple的實現,如果發現我的程式碼有問題,歡迎大家指出。
實現的效果
ripple的使用
首先在res目錄下新建一個drawable-v21的目錄,然後在裡面新建一個drawable檔案ripple_style_one.xml,如圖 ripple_style_one.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/darker_gray"> <!-- 點選時波紋的顏色 -->
<item android:drawable="@android:color/white"/> <!-- 沒有點選時的顏色 -->
</ripple>
在該檔案中可以設定點選時的波紋顏色,然後在控制元件的background中設定該drawable檔案就可以了
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="純波紋"
android:clickable="true"
android:textSize="22sp"
android:paddingStart="30dp"
android:paddingEnd="30dp"
android:paddingTop="10dp"
android:paddingBottom ="10dp"
android:focusable="true"
android:background="@drawable/ripple_style_one"/>
除了單獨使用ripple外,ripple還可以和selector結合起來,使用方法如下
ripple_style_two.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/darker_gray"> <!-- 波紋顏色 -->
<item> <!-- item中可以包含selector -->
<selector>
<item android:state_pressed="true"
android:drawable="@android:color/darker_gray"/> <!-- 按下屏幕後顯示的顏色 -->
<item android:drawable="@android:color/white"/> <!-- 沒有操作時的顏色 -->
</selector>
</item>
</ripple>
同樣在控制元件的background中設定該drawable檔案
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="波紋搭配selector"
android:clickable="true"
android:textSize="22sp"
android:paddingStart="30dp"
android:paddingEnd="30dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:focusable="true"
android:background="@drawable/ripple_style_two"/>
OK,做完這些再執行就會出現文章開頭處給出的效果。
注意
- 設定了ripple的drawable檔案必須放在drawable-v21資料夾中,如果放在drawable資料夾中會報錯。
- drawable-v21資料夾存放的xml檔案在API 21(5.0版本)以上才可使用,也就是說低於該版本的手機不能使用這種波紋效果。