除了使用drawable這樣的圖片外今天談下自訂圖形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://www.norkoo.com"> <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>
注意!提示大家,以上幾個item的區別主要是體現在state_pressed按下或state_focused獲得焦點時,噹噹來判斷顯示什麼類型,而沒有state_xxx屬性的item可以看作是常規狀態下。