如果你對Android系統內建的UI控制項感覺不夠滿意,可以嘗試下自訂控制項,我們就以Button為例,很早以前Android123就寫到過Android Button按鈕控制項美化方法裡面提到了xml的selector構造。當然除了使用drawable這樣的圖片外今天Android開發網談下自訂圖形shape的方法,對於Button控制項Android上支援以下幾種屬性shape、gradient、stroke、corners等。
複製代碼 代碼如下: 我們就以目前系統的Button的selector為例說下:
< android:startColor="#ff8c00"
android:endColor="#FFFFFF"
android:angle="270" />
< android:width="2dp"
android:color="#dcdcdc" />
< android:radius="2dp" />
< android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
對於上面,這條shape的定義,分別為漸層,在gradient中startColor屬性為開始的顏色,endColor為漸層結束的顏色,下面的angle是角度。接下來是stroke可以理解為邊緣,corners為拐角這裡radius屬性為半徑,最後是相對位置屬性padding。
對於一個Button完整的定義可以為複製代碼 代碼如下:
<xmlns:android="http://schemas.android.com/apk/res/Android">
<android:startColor="#ff8c00"
android:endColor="#FFFFFF"
android:angle="270" />
<android:width="2dp"
android:color="#dcdcdc" />
<android:radius="2dp" />
<android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
<android:startColor="#ffc2b7"
android:endColor="#ffc2b7"
android:angle="270" />
<android:width="2dp"
android:color="#dcdcdc" />
<android:radius="2dp" />
<android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
<android:startColor="#ff9d77"
android:endColor="#ff9d77"
android:angle="270" />
<android:width="2dp"
android:color="#fad3cf" />
<android:radius="2dp" />
<android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
提示,以上幾個item的區別主要是體現在state_pressed按下或state_focused獲得焦點時,噹噹來判斷顯示什麼類型,而沒有state_xxx屬性的item可以看作是常規狀態下。