Android的Drawable

shape

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="5dp"
android:shape="ring"
android:thicknessRatio="9"
android:useLevel="false">
<!--shape 形状
rectangle 矩形
————————————————————————————————————————
oval 椭圆
————————————————————————————————————————
line 线
需要设置 stroke 描边 才能显示
————————————————————————————————————————
ring 圆环
需要设置 stroke 描边 才能显示
android:useLevel="false" 一般为false
圆环内半径
android:innerRadius圆环内半径
android:innerRadiusRatio 以环的宽度比率来表示内环的半径 默认为3,表示内环半径为环的宽度除以3
环的厚度
android:thickness
android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,默认为9,表示环的厚度为环的宽度除以9,
-->
<!--————————————————————————————————————————————————————————————————————————————————————-->
<corners android:radius="10dp" /> <!--四个角的角度 只能用于矩形-->
<solid android:color="@color/colorPrimaryDark"/><!--填充的颜色-->
<padding android:bottom="10dp" /><!--内容与形状边界的内间距-->
<size android:width="5dp" android:height="5dp"/><!--形状的大小 作为view背景指定这个是没有用的-->
<!--——————————————————————————————————————————————————————————————————————————-->
<stroke android:color="@color/colorPrimary"
android:width="2dp"
/>
<!--stroke 描边
android:color 描边颜色
android:width 描边宽度
android:dashWidth 虚线的每一节长度
android:dashGap 虚线的每一节的距离
-->
<!--——————————————————————————————————————————————————————————————————————————-->
<gradient
android:angle="45"
android:centerColor="@color/colorPrimaryDark"
android:endColor="@color/colorAccent"
android:startColor="@color/colorPrimary"
android:type="sweep"
android:useLevel="false" />
<!--gradient 渐变
渐变开始 中间 结束的颜色
android:startColor
android:centerColor
android:endColor
——————————————————————————————————————————————————————
android:useLevel 如果为true,则可在LevelListDrawable中使用
android:type 渐变类型
——————————————————————————————————————————————————————
线性渐变 linear 默认渐变
android:angle 必须是45的倍数,0表示从左到右,90表示从下到上
——————————————————————————————————————————————————————
放射渐变 radial
android:gradientRadius 渐变半径
android:centerX 渐变中心的相对X坐标,在0.0到1.0之间,默认为0.5,表示在正中间
android:centerY 渐变中心的相对Y坐标,在0.0到1.0之间,默认为0.5,表示在正中间
———————————————————————————————————————————————————————
扫描渐变 sweep
-->
</shape>

layer-list

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>

selector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/layout_list" android:state_pressed="true"/>
<item android:drawable="@drawable/shape" android:state_pressed="false"/>
<!--
android:state_enabled: 设置触摸或点击事件是否可用状态,一般只在false时设置该属性,表示不可用状态
android:state_pressed: 设置是否按压状态,一般在true时设置该属性,表示已按压状态,默认为false
android:state_selected: 设置是否选中状态,true表示已选中,false表示未选中
android:state_checked: 设置是否勾选状态,主要用于CheckBox和RadioButton,true表示已被勾选,false表示未被勾选
android:state_checkable: 设置勾选是否可用状态,类似state_enabled,只是state_enabled会影响触摸或点击事件,而state_checkable影响勾选事件
android:state_focused: 设置是否获得焦点状态,true表示获得焦点,默认为false,表示未获得焦点
android:state_window_focused: 设置当前窗口是否获得焦点状态,true表示获得焦点,false表示未获得焦点,例如拉下通知栏或弹出对话框时,当前界面就会失去焦点;另外,ListView的ListItem获得焦点时也会触发true状态,可以理解为当前窗口就是ListItem本身
android:state_activated: 设置是否被激活状态,true表示被激活,false表示未激活,API Level 11及以上才支持,可通过代码调用控件的setActivated(boolean)方法设置是否激活该控件
android:state_hovered: 设置是否鼠标在上面滑动的状态,true表示鼠标在上面滑动,默认为false,API Level 14及以上才支持
-->
</selector>