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