shape
作用:定义控件一些默认样式
使用:
1)在res/drawable下创建xml文件用于定义shape,如:my_button.xml;
2)在代码或xml布局文件中控件background属性引用此文件,如在布局文件中的控件:android:background=”@drawable/my_button”。
属性:
<?xml version="1.0" encoding="utf-8"?>
<!--
shape的形状默认为矩形,可设置为矩形(rectangle)、椭圆形(oval)、线性(line)、环形(ring)
注意以下属性只有在shape为ring时才能使用:
android:innerRadius 内环半径
android:innerRadiusRatio 浮点型,以环宽度比表示内环半径,
如:android:innerRadiusRatio="5"表示内环半径等于环的宽度除以5,
此值可被android:innerRadius覆盖
android:thickness 环的厚度
android:thicknessRatio 浮点型,以环宽度比表示环的厚度
如:android:thicknessRatio="2"表示环厚度等于环的宽度除以2,
此值可被android:thickness
android:useLevel 布尔型,如果当做是LevelListDrawable使用时值为true,否则为false
以下以shape为rectangle为例
-->
<shape
xmlns:android:"http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--
圆角conner
android:radius 整形 半径
android:topLeftRadius 整形 左上角半径
android:topRightRadius 整形 右上角半径
android:bottomLeftRadius 整形 左下角半径
android:bottomRightRadius 整形 半径
-->
<conner
android:radius = "8dp"
android:topLeftRadius = "5dp"
android:topRightRadius = "15dp"
android:bottomLeftRadius = "20dp"
android:bottomRightRadius = "25dp"
/>
<!--
渐变色gradient
android:startColor 颜色值 起始颜色
android:endColor 颜色值 结束颜色
android:centerColor 颜色型 渐变中间色
android:angle 整型 渐变角度
(PS:当angle=0时,渐变色是从左向右。
然后逆时针方向转,当angle=90时为从下往上。
angle必须为45的整数倍)
android:type ["linear"|"radial"|"sweep"]
[默认线性| 放射 |扫描线性]
android:useLevel ["true" | "false"]
如果要使用LevelListDrawable对象,就要设置为true。
设置为true无渐变。false有渐变色
android:gradientRadius 整型 渐变色半径
当android:type="radius" 时以下属性方可使用且必须使用
android:centerX 整型 渐变中心点X坐标的相对位置
android:centerY 整型 渐变中心点Y坐标的相对位置
-->
<gradient
android:startColor = "#FFFF0000"
android:endColor = "#00000000"
android:angle = "45"
/>
<!--
内边距padding
android:left 整型 左内边距
android:right 整型 右内边距
android:top 整型 上内边距
android:botom 整型 下内边距
-->
<padding
android:left = "10dp"
android:right = "10dp"
android:top = "10dp"
android:botom = "10dp"
/>
<!--
大小size
android:width 整型 宽度
android:height 整型 高度
-->
<size
android:width = "100dp"
/>
<!--
内部填充solid
android:color 颜色值 填充颜色
-->
<solid
android:color = "#FFFF9d70"
/>
<!--
描边stroke
android:width 整型 描边的宽度
android:color 颜色值 描边的颜色
android:dashWidth 整型 表示描边的样式是虚线的宽度
值为0时,表示为实线。值大于0则为虚线。
android:dashGap 整型 表示描边为虚线时,虚线之间的间隔
-->
<stroke
android:width="2dp"
android:color="#fbfbfbfb"
/>
</shape>
selector
作用:定义控件不同状态下的显示
使用:
1)在res/drawable下创建xml文件用于定义selector,如:my_button.xml;
2)在代码或xml布局文件中控件background属性引用此文件,如在布局文件中的控件:android:background=”@drawable/my_button”
实现
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
android:state_window_focused默认时的背景图片
android:state_active=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
他们的执行是有执行顺序的
条件限定越细致,则应该放到前面
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:Android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/pic1" />
<!-- 没有焦点时的背景图片 -->
<item
android:state_window_focused="false"
android:drawable="@drawable/pic_blue"
/>
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable= "@drawable/pic_red"
/>
<!-- 触摸模式下单击时的背景图片-->
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/pic_pink"
/>
<!--选中时的图片背景-->
<item
android:state_selected="true"
android:drawable="@drawable/pic_orange"
/>
<!--获得焦点时的图片背景-->
<item
android:state_focused="true"
android:drawable="@drawable/pic_green"
/>
</selector>
layer-list
作用:将多个图片或上面两种效果按照顺序层叠起来
例:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<!--图片1-->
<item android:id="@+id/user_faceback_drawable"
android:drawable="@drawable/faceback" />
<!--图片2-->
<item android:id="@+id/user_face_drawable"
android:drawable="@drawable/h001"
android:left="10.0dip"
android:top="18.0dip"
android:right="25.0dip"
android:bottom="35.0dip" />
</layer-list>
<!--2个图片的叠加-->
以上三个标签可以揉合到一块儿来使用,所要实现的效果就是上面三种简介的说明