Shape Drawable

这一类的shape定义在xml中

res/drawable/filename.xml

The filename is used as the resource ID.(这个文件名作为资源id)

compiled resource datatype:(复杂资源的数据类型) GradientDrawable.

resource reference(资源参考): R.drawable.filename

In XML: 

@[package:]drawable/filename

syntax:(语法)

<span class="pun" style="color: rgb(102, 102, 0);"><?</span><span class="pln" style="color: rgb(0, 0, 0);">xml version</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="str" style="color: rgb(0, 136, 0);">"1.0"</span><span class="pln" style="color: rgb(0, 0, 0);"> encoding</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="str" style="color: rgb(0, 136, 0);">"utf-8"</span><span class="pun" style="color: rgb(102, 102, 0);">?></span><span class="pln" style="color: rgb(0, 0, 0);">
</span><span class="tag" style="color: rgb(0, 0, 136);"><</span><a target=_blank href="http://developer.android.com/guide/topics/resources/drawable-resource.html#shape-element" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="tag" style="color: rgb(0, 0, 136);">shape</span></a><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">xmlns:android</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"http://schemas.android.com/apk/res/android"</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:shape</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">["rectangle"</span><span class="pln" style="color: rgb(0, 0, 0);"> | </span><span class="atv" style="color: rgb(0, 136, 0);">"oval"</span><span class="pln" style="color: rgb(0, 0, 0);"> | </span><span class="atv" style="color: rgb(0, 136, 0);">"line"</span><span class="pln" style="color: rgb(0, 0, 0);"> | </span><span class="atv" style="color: rgb(0, 136, 0);">"ring"</span><span class="pln" style="color: rgb(0, 0, 0);">] </span><span class="tag" style="color: rgb(0, 0, 136);">></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><</span><a target=_blank href="http://developer.android.com/guide/topics/resources/drawable-resource.html#corners-element" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="tag" style="color: rgb(0, 0, 136);">corners</span></a><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:radius</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:topLeftRadius</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:topRightRadius</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:bottomLeftRadius</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:bottomRightRadius</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><</span><a target=_blank href="http://developer.android.com/guide/topics/resources/drawable-resource.html#gradient-element" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="tag" style="color: rgb(0, 0, 136);">gradient</span></a><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:angle</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:centerX</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:centerY</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:centerColor</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:endColor</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">color</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:gradientRadius</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:startColor</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">color</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:type</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">["linear"</span><span class="pln" style="color: rgb(0, 0, 0);"> | </span><span class="atv" style="color: rgb(0, 136, 0);">"radial"</span><span class="pln" style="color: rgb(0, 0, 0);"> | </span><span class="atv" style="color: rgb(0, 136, 0);">"sweep"</span><span class="pln" style="color: rgb(0, 0, 0);">]
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:useLevel</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">["true"</span><span class="pln" style="color: rgb(0, 0, 0);"> | </span><span class="atv" style="color: rgb(0, 136, 0);">"false"</span><span class="pln" style="color: rgb(0, 0, 0);">] </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><</span><a target=_blank href="http://developer.android.com/guide/topics/resources/drawable-resource.html#padding-element" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="tag" style="color: rgb(0, 0, 136);">padding</span></a><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:left</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:top</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:right</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:bottom</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><</span><a target=_blank href="http://developer.android.com/guide/topics/resources/drawable-resource.html#size-element" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="tag" style="color: rgb(0, 0, 136);">size</span></a><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:width</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:height</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><</span><a target=_blank href="http://developer.android.com/guide/topics/resources/drawable-resource.html#solid-element" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="tag" style="color: rgb(0, 0, 136);">solid</span></a><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:color</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">color</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><</span><a target=_blank href="http://developer.android.com/guide/topics/resources/drawable-resource.html#stroke-element" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="tag" style="color: rgb(0, 0, 136);">stroke</span></a><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:width</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:color</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">color</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:dashWidth</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:dashGap</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"</span><em><span class="atv" style="color: rgb(0, 136, 0);">integer</span></em><span class="atv" style="color: rgb(0, 136, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
</span><span class="tag" style="color: rgb(0, 0, 136);"></shape></span>

元素: <shape>

attributes:

xmlns:android

String. 

Required. Defines the XML namespace, which must be 

"http://schemas.android.com/apk/res/android".

android:shape

Keyword. Defines the type of shape. Valid values are:(定义这个类型的形状,变量值是:)

Value

Desciption

"rectangle"

A rectangle (长方形)that fills the containing View. This is the default shape.(这个是默认的形状)

"oval"

An oval (椭圆形)shape that fits the dimensions of the containing View.

"line"

<stroke>

"ring"

A ring shape.

android:shape="ring":

android:innerRadius

Dimension. The radius for the inner part of the ring (the hole in the middle), as a dimension value or 

dimension resource.

android:innerRadiusRatio

Float. The radius for the inner part of the ring, expressed as a ratio of the ring's width. For instance, if 

android:innerRadiusRatio="5", then the inner radius equals the ring's width divided by 5. This value is overridden by 

android:innerRadius. Default value is 9.

android:thickness

Dimension. The thickness of the ring, as a dimension value or 

dimension resource.

android:thicknessRatio

Float. The thickness of the ring, expressed as a ratio of the ring's width. For instance, if 

android:thicknessRatio="2", then the thickness equals the ring's width divided by 2. This value is overridden by 

android:innerRadius. Default value is 3.

android:useLevel

Boolean. "true" if this is used as a 

LevelListDrawable. This should normally be "false" or your shape may not appear.

<corners>

attributes:

android:radius

Dimension. The radius for all corners, as a dimension value or 

dimension resource. This is overridden for each corner by the following attributes.

android:topLeftRadius

Dimension. The radius for the top-left corner, as a dimension value or 

dimension resource.

android:topRightRadius

Dimension. The radius for the top-right corner, as a dimension value or 

dimension resource.

android:bottomLeftRadius

Dimension. The radius for the bottom-left corner, as a dimension value or 

dimension resource.

android:bottomRightRadius

Dimension. The radius for the bottom-right corner, as a dimension value or 

dimension resource.

Note: Every corner must (initially) be provided a corner radius greater than 1, or else no corners are rounded. If you want specific corners to notbe rounded, a work-around is to use android:radius

<gradient>

attributes:

android:angle

Integer. The angle for the gradient, in degrees. 0 is left to right, 90 is bottom to top. It must be a multiple of 45. Default is 0.

android:centerX

Float. The relative X-position for the center of the gradient (0 - 1.0).

android:centerY

Float. The relative Y-position for the center of the gradient (0 - 1.0).

android:centerColor

Color. Optional color that comes between the start and end colors, as a hexadecimal value or 

color resource.

android:endColor

Color. The ending color, as a hexadecimal value or 

color resource.

android:gradientRadius

Float. The radius for the gradient. Only applied when 

android:type="radial".

android:startColor

Color. The starting color, as a hexadecimal value or 

color resource.

android:type

Keyword. The type of gradient pattern to apply. Valid values are:

Value

Description

"linear"

A linear gradient. This is the default.

"radial"

A radial gradient. The start color is the center color.

"sweep"

A sweeping line gradient.

android:useLevel

Boolean. "true" if this is used as a 

LevelListDrawable.

<padding>

attributes:

android:left

Dimension. Left padding, as a dimension value or 

dimension resource.

android:top

Dimension. Top padding, as a dimension value or 

dimension resource.

android:right

Dimension. Right padding, as a dimension value or 

dimension resource.

android:bottom

Dimension. Bottom padding, as a dimension value or 

dimension resource.

<size>

attributes:

android:height

Dimension. The height of the shape, as a dimension value or 

dimension resource.

android:width

Dimension. The width of the shape, as a dimension value or 

dimension resource.

Note: The shape scales to the size of the container View proportionate to the dimensions defined here, by default. When you use the shape in an ImageView, you can restrict scaling by setting the android:scaleType to "center".

<solid>

attributes:

android:color

Color. The color to apply to the shape, as a hexadecimal value or 

color resource.

<stroke>

attributes:

android:width

Dimension. The thickness of the line, as a dimension value or 

dimension resource.

android:color

Color. The color of the line, as a hexadecimal value or 

color resource.

android:dashGap

Dimension. The distance between line dashes, as a dimension value or 

dimension resource. Only valid if 

android:dashWidth

android:dashWidth

Dimension. The size of each dash line, as a dimension value or 

dimension resource. Only valid if 

android:dashGap

example: res/drawable/gradient_box.xml:

<span class="pun" style="color: rgb(102, 102, 0);"><?</span><span class="pln" style="color: rgb(0, 0, 0);">xml version</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="str" style="color: rgb(0, 136, 0);">"1.0"</span><span class="pln" style="color: rgb(0, 0, 0);"> encoding</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="str" style="color: rgb(0, 136, 0);">"utf-8"</span><span class="pun" style="color: rgb(102, 102, 0);">?></span><span class="pln" style="color: rgb(0, 0, 0);">
</span><span class="tag" style="color: rgb(0, 0, 136);"><shape</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">xmlns:android</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"http://schemas.android.com/apk/res/android"</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:shape</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"rectangle"</span><span class="tag" style="color: rgb(0, 0, 136);">></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><gradient</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:startColor</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"#FFFF0000"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:endColor</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"#80FF00FF"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:angle</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"45"</span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><padding</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:left</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"7dp"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:top</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"7dp"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:right</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"7dp"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:bottom</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"7dp"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><corners</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:radius</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"8dp"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
</span><span class="tag" style="color: rgb(0, 0, 136);"></shape></span>

This layout XML applies the shape drawable to a View:

<span class="tag" style="color: rgb(0, 0, 136);"><TextView</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:background</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"@drawable/gradient_box"</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:layout_height</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"wrap_content"</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:layout_width</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(0, 136, 0);">"wrap_content"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span>

This application code gets the shape drawable and applies it to a View:

<span class="typ" style="color: rgb(102, 0, 102);">Resources</span><span class="pln" style="color: rgb(0, 0, 0);"> res </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><code style="line-height: 1em;"><a target=_blank href="http://developer.android.com/reference/android/content/Context.html#getResources()" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="pln" style="color: rgb(0, 0, 0);">getResources</span><span class="pun" style="color: rgb(102, 102, 0);">()</span></a></code><span class="pun" style="color: rgb(102, 102, 0);">;</span><span class="pln" style="color: rgb(0, 0, 0);">
</span><span class="typ" style="color: rgb(102, 0, 102);">Drawable</span><span class="pln" style="color: rgb(0, 0, 0);"> shape </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> res</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><code style="line-height: 1em;"><a target=_blank href="http://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int)" style="color: rgb(0, 102, 153); text-decoration: none;"><span class="pln" style="color: rgb(0, 0, 0);">getDrawable</span></a></code><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">R</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">drawable</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">gradient_box</span><span class="pun" style="color: rgb(102, 102, 0);">);</span><span class="pln" style="color: rgb(0, 0, 0);">

</span><span class="typ" style="color: rgb(102, 0, 102);">TextView</span><span class="pln" style="color: rgb(0, 0, 0);"> tv </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="typ" style="color: rgb(102, 0, 102);">TextView</span><span class="pun" style="color: rgb(102, 102, 0);">)</span><span class="pln" style="color: rgb(0, 0, 0);">findViewByID</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">R</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">id</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">textview</span><span class="pun" style="color: rgb(102, 102, 0);">);</span><span class="pln" style="color: rgb(0, 0, 0);">
tv</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln" style="color: rgb(0, 0, 0);">setBackground</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">shape</span><span class="pun" style="color: rgb(102, 102, 0);">);</span>

gradient   -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。

gradient:渐变android:startColor和android:endColor分别为起始和结束颜色,android:angle是渐变角度,必须为45的整数倍。另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

solid      --  填充。

solid:实心,就是填充的意思android:color指定填充的颜色

stroke   --  描边。

stroke:描边android:width="2dp" 描边的宽度,android:color 描边的颜色。我们还可以把描边弄成虚线的形式,设置方式为:android:dashWidth="5dp" android:dashGap="3dp"其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

corners  --  圆角。

corners:圆角android:radius为角的弧度,值越大角越圆。我们还可以把四个角设定成不同的角度,方法为:<corners         android:topRightRadius="20dp"    右上角        android:bottomLeftRadius="20dp"    右下角        android:topLeftRadius="1dp"    左上角        android:bottomRightRadius="0dp"    左下角 />这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个不要记错了。

padding   -- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。

android:angle网上有各种说法,这里,我说说自己的实验结果,渐变的时候,最原始的,即android:angle=“0”时,是从左到右,按照开始颜色到结束颜色来渲染的,android:angle=“90”是从上到下来渲染的,android:angle=“180”是从右到左来渲染的,android:angle=“360”和android:angle=“0”是一样的,所以这里应该是这样的,渲染时按照最原始的渲染色板(把控件内部看作一块可以绕中心旋转的板子)围绕控件中心来旋转相应的度数,即android:angle里面的值就是所需要旋转的角度,只是这个旋转角度必须是45的整数倍