文章目录
Drawable使用介绍
转载自:http://blog.csdn.net/feather_wch/article/details/79124608
BitmapDrawable的使用
使用示例
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="你的图片"
android:antialias="true"
android:dither="true"
android:filter="true"
android:gravity="center"
android:mipMap="false"
android:tileMode="disabled"
/>
相关属性
描述
属性 | 描述 |
---|---|
src | 图片资源ID |
antialias | 图片抗锯齿-图片平滑,清晰度降低 |
dither | 开启抖动效果-用于高质量图片在低质量屏幕上保存较好的显示效果(不会失真) |
filter | 开启过滤-在图片尺寸拉伸和压缩时保持较好的显示效果 |
mipMap | 纹理映射-图像处理技术 |
tileMode | 平铺模式-repeat单纯重复、mirror镜面反射、clamp图片四周像素扩散 |
gravity | 将图片放在容器的相对位置(top/bottom/left/right/center) |
ShapeDrawable的作用
使用示例
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"/>
<gradient
android:angle="45"
android:centerX="30"
android:centerY="30"
android:centerColor="@color/colorAccent"
android:endColor="@color/colorPrimary"
android:startColor="@color/colorPrimaryDark"
android:gradientRadius="20"
android:type="linear"
android:useLevel="true" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
<size
android:width="200dp"
android:height="200dp" />
<solid
android:color="@color/colorPrimary"/>
<stroke
android:width="10dp"
android:color="@color/colorAccent"
android:dashWidth="5dp"
android:dashGap="3dp"/>
</shape>
相关属性
和标签
描述
shape(暂时只介绍这一个属性):限定图形的形状,可以取值有rectangle、oval、line、ring
值的注意的是:corners
标签对应于矩形;line
和ring
通过stroke
指定线的宽度和颜色; ring
圆环有五个特殊的shape属性
标签 | 属性 | 描述 |
---|---|---|
corners | radius | 整体设置四个边角的角度 |
topLeftRadius | 单独设置左上角的角度 | |
topRightRadius | 单独设置右上角的角度 | |
bottomLeftRadius | 单独设置左下角的角度 | |
bottomRightRadius | 单独设置右下角的角度 | |
gradient | angle | 设置渐变的角度,其值必须是45的倍数,逆时针测量 |
centerX | 定义渐变中心的x坐标 | |
centerY | 定义渐变中心的y坐标 | |
centerColor | 定义渐变中心开始的颜色 | |
endColor | 定义渐变的结束颜色 | |
startColor | 定义渐变的开始颜色 | |
startColor | 定义渐变的渐变半径 | |
type | 定义渐变的类型,一般为radial 或者sweep | |
useLevel | 如果设置为true,表示此渐变会基于一个级别来绘制其颜色 | |
padding | left | 设置元素左边的内边距大小(单位:dp) |
top | 设置元素上边的内边距大小(单位:dp) | |
right | 设置元素右边的内边距大小(单位:dp) | |
bottom | 设置元素底边的内边距大小(单位:dp) | |
size | height | 设置元素高度 |
width | 设置元素宽度 | |
solid | color | 设置元素的填充颜色,和gradient 标签互斥 |
stock | width | 设置描边的宽度 |
dashWidth | 定义描边时虚线的每一段长度 | |
color | 设置描边的颜色 | |
dashGap | 定义描边时虚线的每一段间隔 |
LayerDrawable的使用(layer-list)
使用示例
<?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="#0ac39e"/>
</shape>
</item>
<item
android:bottom="6dp">
<shape android:shape="rectangle">
<solid
android:color="#FFFFFF"/>
</shape>
</item>
<item
android:bottom="1dp"
android:left="1dp"
android:right="1dp">
<shape android:shape="rectangle">
<solid
android:color="#FFFFFF"/>
</shape>
</item>
</layer-list>
相关标签的描述
<layer-list>
是用于在 Drawable 资源中定义一个层的列表的标签。它允许你将多个 Drawable 元素堆叠在一起,以创建一个复合的图形效果。<layer-list>
标签本身并没有直接的属性,但其中的子元素(通常是 <item>
标签)具有一些属性来定义每一层的特性。
属性 | 描述 |
---|---|
drawable | 指定要作为当前层显示的Drawable资源,可以是前面的那些Drawable资源 |
id | 为当前层指定唯一id,允许你可以在代码中引用对应的层 |
top | 设置当前层顶部与容器顶部之间的偏移量 |
right | 设置当前层右侧与容器顶部之间的偏移量 |
left | 设置当前层底部与容器顶部之间的偏移量 |
bottom | 设置当前层左部与容器顶部之间的偏移量 |
width | 设置当前层的宽度 |
height | 设置当前层的宽度 |
gravity | 控制当前层内的内容如何在其空间内定位和对齐 |
StateListDrawable的使用(selector)
<selector>
标签通常用于定义状态列表(StateList Drawable),它允许你根据视图(如按钮、菜单项等)的不同状态来指定不同的Drawable资源。<selector>
标签内包含多个 <item>
标签,每个 <item>
标签定义了一个状态以及与之对应的Drawable资源。
使用示例
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="false" //StateListDrawable的固有大小是否根据状态而改变,默认false=根据状态而改变
android:dither="true" //是否开启抖动-让高质量图片在低质量屏幕上依旧效果好,默认true开启
android:variablePadding="false" //padding是否根据状态的改变而改变,不建议开启(false)
>
<item android:state_pressed="true" //Button被按下后却没有松开的状态
android:drawable="@color/colorAccent"/>
<item android:state_focused="true" //View获取了焦点
android:drawable="@color/colorPrimary"/>
<item android:state_selected="true" //用户选择了View
android:drawable="@color/colorPrimary"/>
<item android:state_checked="true" //用户选中了View,一般用于CheckBox这类在选中和没有选中状态之间切换的View
android:drawable="@drawable/ic_launcher_background"/>
<item android:state_enabled="true" //View处于可用状态
android:drawable="@drawable/ic_launcher_foreground"/>
<item android:drawable="#FFFFFF"/> //默认Drawable: 按顺序向下匹配,需要放在最下方,因为可以匹配任何状态
</selector>
相关标签的描述
属性 | 描述 |
---|---|
drawable | 定义状态匹配时应该使用的Drawable资源。可以引用其他的@Drawable/*** |
state_pressed | 当视图被按下时匹配此状态(true / false) |
state_focused | 当前视图获得焦点时匹配此状态(true / false) |
state_selected | 当视图被选中时匹配此状态(true / false) |
state_checkable | 当视图是可检查的(如复选框或单选按钮)时匹配此状态(true / false) |
state_checked | 当可检查的视图被选中时匹配此状态(true / false) |
state_enabled | 当视图启用时匹配此状态(true / false) |
state_window_focused | 当视图所在的窗口具有焦点时匹配此状态(true / false) |
state_active | 当视图在可拖动窗口中处于活动状态时匹配此状态(如滚动条滑块)(true / false) |
state_first | 当视图是其父级中的第一个可见子级时匹配此状态(true / false) |
state_middle | 当视图是其父级中的中间可见子级时匹配此状态(true / false) |
state_last | 当视图是其父级中的最后一个可见子级时匹配此状态(true / false) |
state_single | 当视图是其父级中唯一的可见子级时匹配此状态(true / false) |
state_above_anchor | 当视图在锚点上方时匹配此状态(如带有菜单项的ActionBar)(true / false) |