在android 5.0版本,增加了水波動化效果

一開始我還以爲是sony個人特色呢(很不專業)

以下是簡單的程式碼

在drawable中新增ripple_sample.xml

<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_sample_color">
    <!--ripple中的color為點擊時的顏色-->

    <!--基本顏色-->
    <item>
        <color android:color="#dddddd"/>
    </item>
</ripple>

其中,ripple是點擊時水波效果的顏色(紫色 #ac6fc2),其預設(即為無動作)是為裡頭的item

其效果如下圖:

 

可在其中加入shape屬性設定其圓角顏色等等

<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_sample_color">
    <!--ripple中的color為點擊時的顏色-->

    <!--基本顏色-->
    <item>
        <shape>
            <solid android:color="#dddddd" />
            <corners android:radius="5dip"/>
        </shape>
    </item>
</ripple>

其效果如下圖

 

新增後ripple_sample,在需要的button或其他物件上,設定background便會生效囉!!

若APP需要支援4.4以上,那水波效果要怎麼處理呢?

一個簡單的做法,使用動態設定background的方式,不使用android:background.

利用Bulid.version sdk_int 大於LOLLIPOP(21)來判定囉!

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    btn.setBackgroundResource(R.drawable.ripple_sample);
else
    btn.setBackgroundResource(android.R.drawable.btn_default);

 

arrow
arrow
    文章標籤
    android 動畫效果
    全站熱搜

    Owen Chen 發表在 痞客邦 留言(2) 人氣()