1. 程式人生 > >Android中Shape Drawable在xml中的使用

Android中Shape Drawable在xml中的使用

關於Shape使用的官方文件:

Android中常常使用shape來定義控制元件的一些顯示屬性,下面是Shape中的所有屬性及一個簡單的示例:

[html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <shape
  3.     xmlns:android="http://schemas.android.com/apk/res/android"
  4.     android:shape=["rectangle" | "oval" | "line" | "ring"] >
  5.     <corners
  6.         android:radius="integer"
  7.         android:topLeftRadius="integer"
  8.         android:topRightRadius="integer"
  9.         android:bottomLeftRadius="integer"
  10.         android:bottomRightRadius="integer"/>
  11.     <gradient
  12.         android:angle="integer"
  13.         android:centerX="integer"
  14.         android:centerY
    ="integer"
  15.         android:centerColor="integer"
  16.         android:endColor="color"
  17.         android:gradientRadius="integer"
  18.         android:startColor="color"
  19.         android:type=["linear" | "radial" | "sweep"]          
  20.         android:useLevel=["true" | "false"] />
  21.     <padding
  22.         android:left
    ="integer"
  23.         android:top="integer"
  24.         android:right="integer"
  25.         android:bottom="integer"/>
  26.     <size
  27.         android:width="integer"
  28.         android:height="integer"/>
  29.     <solid
  30.         android:color="color"/>
  31.     <stroke
  32.         android:width="integer"
  33.         android:color="color"
  34.         android:dashWidth="integer"
  35.         android:dashGap="integer"/>
  36. </shape>


下面是一個小示例:

main.xml檔案內容如下:

[html] view plain copy  print?
  1. <p><?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>"  
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical"
  6.     android:paddingLeft="40dip"></p><p><Button
  7.         android:layout_width="wrap_content"
  8.         android:layout_height="wrap_content"
  9.         android:background="@drawable/button_selector"
  10.         android:text="TestShapeButton"/></p><p></LinearLayout></p>

button_selector.xml內容如下:

[html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3.     <itemandroid:state_pressed="true"><shape>
  4.             <!-- 漸變 -->
  5.             <gradientandroid:endColor="#FFFFFF"android:gradientRadius="50"android:startColor="#ff8c00"android:type="radial"/>
  6.             <!-- 描邊 -->
  7.             <strokeandroid:dashGap="3dp"android:dashWidth="5dp"android:width="2dp"android:color="#dcdcdc"/>
  8.             <!-- 圓角 -->
  9.             <cornersandroid:radius="2dp"/>
  10.             <paddingandroid:bottom="10dp"android:left="10dp"android:right="10dp"android:top="10dp"/>
  11.         </shape></item>
  12.     <itemandroid:state_focused="true"><shape>
  13.             <gradientandroid:angle="270"android:endColor="#ffc2b7"android:startColor="#ffc2b7"/>
  14.             <strokeandroid:width="2dp"android:color="#dcdcdc"/>
  15.             <cornersandroid:radius="2dp"/>
  16.             <paddingandroid:bottom="10dp"android:left="10dp"android:right="10dp"android:top="10dp"/>
  17.         </shape></item>
  18.     <item><shape>
  19.             <solidandroid:color="#ff9d77"/>
  20.             <strokeandroid:width="2dp"android:color="#fad3cf"/>
  21.             <cornersandroid:bottomLeftRadius="5dp"android:bottomRightRadius="0dp"android:topLeftRadius="0dp"android:topRightRadius="5dp"/>
  22.             <paddingandroid:bottom="10dp"android:left="10dp"android:right="10dp"android:top="10dp"/>
  23.         </shape></item>
  24. </selector>

效果圖如下:

 一般狀態:

按下狀態:

原文地址:http://blog.csdn.net/ygc87/article/details/7673587