<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer"/>
<gradient
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:usesLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer"/>
<size
android:width="integer"
android:height="integer"/>
<solid
android:color="color"/>
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer"/>
</shape>
-
<shape>
-
The shape drawable. This must be the root element.
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" A horizontal line that spans the width of the containing View. This shape requires the <stroke> element to define the width of the line.水平线,由<stroke>指定宽度 "ring" A ring shape.环形
The following attributes are used only when
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>
-
String.
-
Creates rounded corners for the shape. Applies only when the shape is a rectangle.
设置边角的半径,数值越大角越圆,越小越趋近于直角。 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 not be rounded, a work-around is to use android:radius to set a default corner radius greater than 1, but then override each and every corner with the values you really want, providing zero ("0dp") where you don't want rounded corners.
<gradient>
-
Dimension. The radius for all corners, as a dimension value or
-
Specifies a gradient color for the shape.
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.it must be a multiple of 45
这个是重点。不是任意角度。 数值必须是45度的倍数,默认为0,即从左到右渐变,当值为90时,从下到上渐变,以此类推,当为180时,从右到左渐变,为270时,从上到下渐变。
android:centerX
-
Float. The relative X-position for the center of the gradient (0 - 1.0). Does not apply when
android:type="linear". 渐变的水平中心点,值为0-1.0
android:centerY
-
Float. The relative Y-position for the center of the gradient (0 - 1.0). Does not apply when
android:type="linear". 渐变的垂直中心点,值为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: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. 可以被当做level-list使用
<padding>
-
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.it must be a multiple of 45
-
Padding to apply to the containing View element (this pads the position of the View content, not the shape).
此标签的作用是为内容设置与当前应用此shape的View的边距,而不是设置当前View与父View的边距 。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>
-
Dimension. Left padding, as a dimension value or
-
The size of the shape.
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>
-
Dimension. The height of the shape, as a dimension value or
-
A solid color to fill the shape.
设置整个背景的颜色,如果已经定义了渐变色,则此属性无效了。 attributes:
-
android:color
-
Color. The color to apply to the shape, as a hexadecimal value or
color resource.
<stroke>
-
Color. The color to apply to the shape, as a hexadecimal value or
-
A stroke line for the shape.
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 is set. 指定每段之间的间隔
android:dashWidth
-
Dimension. The size of each dash line, as a dimension value or
dimension resource. Only valid if android:dashGap is set. 必须与上面的dashGap搭配,缺一不可,此是指定每段的长度
-
Dimension. The thickness of the line, as a dimension value or
<?xml version="1.0" encoding="utf-8"?>
<shapexmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<paddingandroid:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp"/>
<cornersandroid:radius="8dp"/>
</shape>
This layout XML applies the shape drawable to a View:
<TextViewandroid:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content"/>
This application code gets the shape drawable and applies it to a View:
Resources res =getResources(); Drawable shape = res.getDrawable(R.drawable.gradient_box); TextView tv =(TextView)findViewByID(R.id.textview); tv.setBackground(shape);