Android屬性大全之shape

在Android開發(fā)中,shape用于設(shè)定形狀,可以在selector,layout等里面使用,其屬性如下:(部分有參考資料)

solid:實(shí)心,就是填充的意思
android:color指定填充的顏色

gradient:漸變
android:startColorandroid:endColor分別為起始和結(jié)束顏色,android:angle是漸變角度,必須為45的整數(shù)倍。
另外漸變默認(rèn)的模式為android:type="linear",即線性漸變,可以指定漸變?yōu)閺较驖u變,android:type="radial",徑向漸變需要指定半徑android:gradientRadius="50"

stroke:描邊
android:width="2dp"描邊的寬度,android:color 描邊的顏色。
我們還可以把描邊弄成虛線的形式,設(shè)置方式為:

  android:dashWidth="5dp"
  android:dashGap="3dp"

其中android:dashWidth表示'-'這樣一個(gè)橫線的寬度,android:dashGap表示之間隔開的距離。

corners:圓角
android:radius為角的弧度,值越大角越圓。
我們還可以把四個(gè)角設(shè)定成不同的角度,方法為:

<corners android:topRightRadius="20dp" 右上角
  android:bottomLeftRadius="20dp" 右下角
  android:topLeftRadius="1dp" 左上角
  android:bottomRightRadius="0dp" 左下角
/>

這里有個(gè)地方需要注意,bottomLeftRadius是右下角,而不是左下角,這個(gè)有點(diǎn)郁悶,不過不影響使用,記得別搞錯(cuò)了就行。
還有網(wǎng)上看到有人說(shuō)設(shè)置成0dp無(wú)效,不過我在測(cè)試中發(fā)現(xiàn)是可以的,我用的是2.2,可能修復(fù)了這個(gè)問題吧,如果無(wú)效的話那就只能設(shè)成1dp了。

padding:間隔
這個(gè)就不用多說(shuō)了,XML布局文件中經(jīng)常用到。

具體試?yán)a如下:

main.xml:
<Button android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="TestShapeButton"
  android:background="@drawable/button_selector" />
button_selector.xml:
<?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:type="radial"
         android:gradientRadius="50" />
      <!-- 描邊 -->
      <stroke android:width="2dp"
         android:color="#dcdcdc"
         android:dashWidth="5dp"
         android:dashGap="3dp" />
      <!-- 圓角 -->
      <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>
      <solid android:color="#ff9d77"/>
      <stroke android:width="2dp"
        android:color="#fad3cf" />
      <corners android:topRightRadius="5dp"
        android:bottomLeftRadius="5dp"
        android:topLeftRadius="0dp"
        android:bottomRightRadius="0dp" />
      <padding android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp" />
    </shape>
  </item>
</selector>

運(yùn)行效果如下圖:
一般狀態(tài):

Android屬性大全之shape

獲得焦點(diǎn)狀態(tài):
Android屬性大全之shape

按下狀態(tài):
Android屬性大全之shape

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,466評(píng)論 25 708
  • 概述 今天我們來(lái)探究一下android的樣式。其實(shí),幾乎所有的控件都可以使用 background屬性去引用自定義...
    CokeNello閱讀 4,906評(píng)論 1 19
  • 本文轉(zhuǎn)載自:http://southpeak.github.io/2014/12/10/quartz2d-8/ Q...
    idiot_lin閱讀 917評(píng)論 0 3
  • 短晝夜夜長(zhǎng), 故鄉(xiāng)綿綿想。 何時(shí)亮明燭, 倩影映西窗。 1982.8.20
    果州聞郡閱讀 94評(píng)論 0 0
  • 我們總是習(xí)慣說(shuō)以后,總會(huì)說(shuō),等我以后有時(shí)間了,我要怎么怎么樣,當(dāng)初的信誓旦旦,總會(huì)被忙碌的生活打亂。 相信學(xué)生時(shí)代...
    大雄與叮當(dāng)貓閱讀 404評(píng)論 0 1