6.1.1 形状图形
形状图形的定义文件放在drawable目录下,它是以shape标签为根节点的XML描述文件。根节点下定义了6个节点,分别是:size(尺寸)、stroke(描边)、corners(圆角)、solid(填充)、padding(间隔)、gradient(渐变),各节点的属性值主要是长宽、半径、角度以及颜色等。
new Drawable File xml文件–根标签为shape shape默认为矩形
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!--内部填充颜色-->
<solid android:color="#f8d714"/>
<!--边框宽度和颜色-->
<stroke android:color="@color/black" android:width="2dp"/>
</shape>
stroke节点
描述了形状图形的描边规格。若无stroke节点,则表示不存在描边。
常用属性说明:
- color:颜色类型,描边的颜色。
- dashGap:像素类型,每段虚线之间的间隔。
- dashWidth:像素类型,每段虚线的宽度。若dashGap和dashWidth有一个值为0,则描边为实线。
- width:像素类型,描边的厚度。
corners节点
- bottomLeftRadius:像素类型,左下圆角的半径。
- bottomRightRadius:像素类型,右下圆角的半径。
- topLeftRadius:像素类型,左上圆角的半径。
- topRightRadius:像素类型,右上圆角的半径。
- radius:像素类型,4个圆角的半径(若有上面4个圆角半径的定义,则不需要radius定义)。
gradient节点
- angle:整型,渐变的起始角度。为0时表示时钟的9点位置,值增大表示往逆时针方向旋转。例如,值为90表示6,点位置,值为180表示3点位置,值为270表示0点/12点位置。
- type:字符串类型,渐变类型。渐变类型的取值说明见表
字段 | 说明 |
---|---|
linear | 线性渐变,默认值 |
radial | 放射渐变,起始颜色就是圆心颜色 |
sweep | 滚动渐变,即一个线段以某个端点为圆心做360度旋转 |
-
centerX:浮点型,圆心的X坐标。当android:type="'linear"时不可用。
-
centerY:浮点型,圆心的Y坐标。当android:type="linear"时不可用。
-
gradientRadius:整型,渐变的半径。当android:type="radial"时需要设置该属性。
-
centerColor:颜色类型,渐变的中间颜色。
-
startColor:颜色类型,渐变的起始颜色。
-
endColor:颜色类型,渐变的终止颜色。
-
useLevel:布尔类型,设置为true为无渐变色、false为有渐变色。
6.1.2 九宫格图片
可以选择可以拉伸放大的区域和不想放大拉伸的区域
创建方式:.png格式的照片,右击–create 9-path file
上方:选中区域代表可以左右拉伸的区域
下方:选中区域代表可以放置文字的区域
左侧:选中区域代表可以上下拉伸的区域
右侧:选中区域代表可以放置文字的区域
6.1.3 状态列表图形
Drawable new–xml文件–根标签selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_test" android:state_pressed="true"/>
<item android:drawable="@mipmap/ic_launcher"/>
</selector>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/select"/>
状态列表图形不仅用于按钮控件,还可用于其他拥有多种状态的控件。
状态类型 | 说明 | 应用场景 |
---|---|---|
state pressed | 是否按下按钮 | Button |
state checked | 是否勾选复选框 | CheckBox、单选按钮RadioButton |
state focused | 是否获取焦点 | 文本编辑框EditText |
state selected | 是否选中 | 各控件通用 |