Shape
shape用于设定形状,可以在selector,layout等里面使用。
<shape>
属性 | 用途 |
---|---|
android:shape=[“rectangle”|”oval”|”line”|”ring”] | 其中rectagle矩形,oval椭圆,line水平直线,ring环形 |
<shape>有6个子节点,各子节点及常用属性如下:
<gradient> 渐变
属性 | 用途 |
---|---|
android:startColor | 起始颜色 |
android:endColor | 结束颜色 |
android:angle | 渐变角度,0从左到右,90表示从下到上,数值为45的整数倍,默认为0; |
android:type | 渐变的样式 liner线性渐变 radial环形渐变 sweep |
当设置填充颜色后,无渐变效果。angle的值必须是45的倍数(包括0),仅在type=”linear”有效,不然会报错。
<solid> 填充
属性 | 用途 |
---|---|
android:color | 填充的颜色 |
<stroke> 描边
属性 | 用途 |
---|---|
android:width | 描边的宽度 |
android:color | 描边的颜色 |
android:dashWidth | 表示’-‘横线的宽度 |
android:dashGap | 表示’-‘横线之间的距离 |
dashWidth和dashGap属性,只要其中一个设置为0dp,则边框为实现边框
<corners > 圆角
属性 | 用途 |
---|---|
android:radius | 圆角的半径 值越大角越圆 |
android:topRightRadius | 右上圆角半径 |
android:bottomLeftRadius | 右下圆角角半径 |
android:topLeftRadius | 左上圆角半径 |
android:bottomRightRadius | 左下圆角半径 |
同时设置五个属性,则Radius属性无效
<padding> 间隔
属性 | 用途 |
---|---|
android:bottom=”1.0dip” | 底部填充 |
android:left=”1.0dip” | 左边填充 |
android:right=”1.0dip” | 右边填充 |
android:top=”0.0dip” | 上面填充 |
例子
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 圆角 -->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!-- 设置圆角半径 -->
<!-- 渐变 -->
<gradient
android:startColor="@android:color/white"
android:centerColor="@android:color/black"
android:endColor="@android:color/black"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>
<!-- 间隔 -->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!-- 各方向的间隔 -->
<!-- 大小 -->
<size
android:width="50dp"
android:height="50dp"/><!-- 宽度和高度 -->
<!-- 填充 -->
<solid
android:color="@android:color/white"/><!-- 填充的颜色 -->
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>
</shape>
Layer-list
layer-list 用于将多个图片或shape按照顺序层叠起来,可用于控件的背景等。
图片层叠
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/android_red"
android:gravity="center" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/android_green"
android:gravity="center" />
</item>
<item android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/android_blue"
android:gravity="center" />
</item>
</layer-list>
shape层叠
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the main color -->
<item>
<shape android:shape="rectangle">
<solid android:color="#ff4fa5d5" />
</shape>
</item>
<!-- This is the line -->
<item android:left="10dp" android:bottom="10dp" android:right="10dp" android:top="10dp" >
<shape >
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>