1. 程式人生 > >ripple實現點選時的水波紋效果

ripple實現點選時的水波紋效果

前言

在看網易雲音樂播放器的時候,覺得它在選擇音樂時候的波紋效果很好看,就想要模仿這種效果。然後在網上找了一下這方面的文章,最後被我發現了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版本)以上才可使用,也就是說低於該版本的手機不能使用這種波紋效果。