前言:
在於一個界面中,與用戶產生交互最多的控件就是按鈕,不過是Button,還是LIst View裏面的item,都起到一個按鈕的功能。用戶通過點擊這些顯式或者隱式的按鈕,來達到和程序交互的作用。而Android原生的按鈕都是千篇一律的白色方塊,這樣的UI不僅會讓用戶感到審美疲勞,就連開發者也會感覺到死板,所以如惡化定製一個合適的按鈕來搭配自己的整個界面的風格是很重要的。這裏就需要用到Selector,來達到按鈕的定製功能。
講解:
Selector的作用是實習那靜態繪圖中的反饋事件,通過給不同的事件設置不同的圖像或者漸變效果。
- 首先在res/drawable內創建一個selectortest.xml文件
創建完後的代碼是這樣的,然後在selector標籤裏面進行一些設置
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
</selector>
- 首先是設置不同的事件點擊效果
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--默認時的背景圖片-->
<item android:drawable="@drawable/selectortest"/>
<!--沒有焦點時的背景圖片-->
<item android:state_window_focused="true"
android:drawable="@drawable/selectortest"/>
<!--非接觸模式下獲得焦點並單擊時的背景圖片-->
<item android:state_pressed="true"
android:state_focused="true"
android:drawable="@drawable/selectortest"/>
<!--觸摸模式下單機時的背景圖片-->
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/selectortest"/>
<!--選中圖片時的背景圖片-->
<item android:state_selected="true"
android:drawable="@drawable/selectortest"/>
<!--獲得焦點時的背景圖片-->
<item android:state_focused="true"
android:drawable="@drawable/selectortest"/>
</selector>
根據不通的需求,可以設置不同的響應事件反饋。然後可以通過另外的幾個標籤來進行其他的設計。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--默認時的背景圖片-->
<item android:state_pressed="true">
<!--設置形狀-->
<shape android:shape="rectangle">
<!--填充的顏色-->
<solid android:color="@color/colorAccent"/>
<!--設置按鈕的四個角爲弧形-->
<!--android:radius 弧形的半徑-->
<corners android:radius="5dip"/>
<!--padding:Button裏面的文字與Button邊界的間隙-->
<padding
android:left="10dp"
android:bottom="10dp"
android:right="10dp"
android:top="10dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorAccent"/>
<corners android:radius="5dip"/>
<padding
android:bottom="10dp"
android:right="10dp"
android:left="10dp"
android:top="10dp"/>
</shape>
</item>
</selector>
還有一個標籤是gradient,具有漸變的功能
<gradient android:startColor="@color/colorAccent"//開始的顏色
android:endColor="@color/colorPrimary"//結束的顏色
android:gradientRadius="50dp"/>
最後是使用,在Button的background標籤裏調用資源文件就可以了