android 自定义Drawable Shape 的应用

<?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>



elements:
<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>
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>
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>
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>
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>
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>
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搭配,缺一不可,此是指定每段的长度
example:
XML file saved at  res/drawable/gradient_box.xml:
<?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:
<TextView
    
	android: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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值