今天設計給我出了一個難題,讓我把按鈕改成水波紋的樣式并且制定固定的顏色。在網上找了好幾個小時也沒有解決這個問題,最終找到大神提供的解決方案,原文在這里:http://blog.csdn.net/u012045061/article/details/50973425

稍有不同的地方在于,設計要求按鈕在disable的時候展示另一種顏色和字體,這就比較麻煩了。
由于動畫都有固定的時間限制,所以采用動畫的方式并不是特別可取,諸位看官還請留意,最好使用Android系統(tǒng)提供的。
不說了,直接上代碼:
1.style中的theme需要使用AppCompat的主題,沒必要給按鈕設置固定的style
2.Activity和Fragment中無需做任何操作
3.字體顏色選擇器:btn_color_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#808080" android:state_enabled="false" />
<item android:color="@android:color/white" android:state_enabled="true" />
</selector>
4.正常狀態(tài)下button的樣式:dot_check_009ee7.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#009ee7" />
<corners android:radius="22dp" />
</shape>
5.按壓狀態(tài)下按鈕的樣式:dot_check_2d63af.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#2d63af" />
<corners android:radius="22dp" />
</shape>
6.不可點擊狀態(tài)下的按鈕樣式:dot_check_b3b3b3.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#b3b3b3" />
<corners android:radius="22dp" />
</shape>
7.創(chuàng)建默認的背景選擇器:selector_btn_blue.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/dot_check_b3b3b3" android:state_enabled="false" />
<item android:drawable="@drawable/dot_check_2d63af" android:state_pressed="true" />
<item android:drawable="@drawable/dot_check_2d63af" android:state_focused="true" />
<item android:drawable="@drawable/dot_check_2d63af" android:state_selected="true" />
<item android:drawable="@drawable/dot_check_009ee7" />
</selector>
8.在res目錄下創(chuàng)建drawable-v21目錄:

9.在drawable-v21目錄中創(chuàng)建一個水波紋背景選擇樣式:selector_btn_blue.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#2d63af">//這里是擴散水波紋的色值里面的色值可以任選一個
<item>
<selector>
// 這里是當按鈕處于disable狀態(tài)下的顏色
<item
android:drawable="@drawable/dot_check_b3b3b3"
android:state_enabled="false" />
// 這里是默認展示出來的顏色
<item
android:drawable="@drawable/dot_check_009ee7"
android:state_enabled="true" />
</selector>
</item>
</ripple>
10.在布局文件中引用:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/tv_certificate_enterprise_submit"
android:layout_width="@dimen/button_width"
android:layout_height="@dimen/button_height"
android:layout_centerInParent="true"
android:background="@drawable/selector_btn_blue"
style="?android:attr/borderlessButtonStyle"
android:enabled="true"
android:gravity="center"
android:text="提交審核"
android:textColor="@drawable/btn_color_selector"
android:textSize="16sp" />
<!--style="?android:attr/borderlessButtonStyle"-->
<!--用于去除按鈕的底部陰影效果-->
</RelativeLayout>
