android资源文件之:shape详解

文章出处:http://blog.csdn.net/shift_wwx


目前发现shape是用于TextView、EditText、Button的background用,当然也可以配合selector使用,简单说就跟一般的图片是一样的,只不过这里变成了手动绘制了。


先show上code:

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >
    
    <solid android:color="#FFFFAEB9" />
    
    <stroke 
        android:width="8dp"
        android:color="@android:color/white"/>
    
    <padding 
        android:left="20dp"
        android:right="20dp"
        android:top="20dp"
        android:bottom="20dp"/>
    
    <corners 
        android:radius="5dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"/>
    
    <gradient 
        android:startColor="#FFFFD700"
        android:endColor="#FF483D8B"
        android:angle="42"
        android:type="radial"
        android:gradientRadius="40"/>   
</shape></span>

android:shape

属性值有:"rectangle" | "oval" | "line" | "ring"

rectangle是矩形,也是默认值

oval是椭圆形,如果设置为这个属性corners就没有效果了

line是直线,ring是环形

1) solid :填充颜色

只有一个属性android:color,表示需要填充的颜色,默认应该是是全透明色。

即跟

<span style="font-size:14px;">android:color="@android:color/transparent"</span>

效果是一样的。


2) stroke:边框、描边

<span style="font-size:14px;">    <stroke 
        android:width="8dp"
        android:color="@android:color/white"/></span>
android:width 表示实线框的宽度

android:color 表示边框的颜色

另外,还有两个属性代表虚线框:

android:dashWidth="5dp"   表示虚线框的宽度

android:dashGap="3dp"     表示虚线框的虚线之间的间隔

这两个属性任意一个属性为0时,代表的是实线


3) padding:间隔

<span style="font-size:14px;">    <padding 
        android:left="8dp"
        android:right="8dp"
        android:top="8dp"
        android:bottom="8dp"/></span>
相当于背景沿着上、下、左、右分别拉伸一定的间隔,也就是说中间的填充分别向四个方向拉伸一定间隔


4) corners:圆角

<span style="font-size:14px;">    <corners 
        android:radius="5dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"/></span>
android:radius:radius是半径的意思,可以想象一个半径越小,这个弧度应该越小,半径越大这个弧度也是越大的,但是肯定有个上限,超过了就看不到效果了

android:topLeftRadius:左上角弧度

android:topRightRadius:右上角弧度

android:bottomLeftRadius:左下角弧度,网上的很多资料应该是sdk版本比较旧,这个属性当时是右下角,但是我在4.4上是左下角,google应该是修正过来了

android:bottomRightRadius:右下角


5) gradient:渐变

<span style="font-size:14px;">    <gradient 
        android:startColor="#FFFFD700"
        android:endColor="#FF483D8B"
        android:angle="45"
        android:type="sweep"/></span>
gradient的属性稍微繁琐一点。

android:startColor:渐变的起始色,如果只设置这个不设置endColor,会向底图颜色渐变

android:endColor: 渐变的终止色,同样如果没有设置startColor,会以底图颜色为起点色

android:angle:        配合渐变,这个值为0-315,设置必须为45的倍数,不然会报错的。0就是左边,45就是左下角,逆时针依次增加

android:type:           渐变方式,属性有linear、sweep、radial,默认是linear即线性渐变。angle属性也只有在type是linear的时候有效,其他的时候是没有效果的。radial的意思是从中心渐变,如果type的属性值为radial的时候,必须要设置渐变半径即另一个属性gradientRadius。

android:gradientRadius:渐变半径配合type为radial使用

另外还有三个属性需要看一下source code解释,暂时未知

android:centerX

android:centerY

android:useLevel





你可能感兴趣的:(android,res,shape)