Android开发中的drawable文件:shape、layer-list和selector标签
Shape:定义的几何形状的标签
属性:
android:shape 这是标签的主要属性,可以定义shape的形状,可以设置成:rectagle矩形,oval椭圆,line水平直线,ring环形。
的子标签包括: 渐变、 填充、 描边、 圆角、 内补偿
shape的颜色渐变效果
android:startColor 起始颜色
android:endColor 结束颜色
android:angle 渐变角度,比如说从白变到黑。是从上向下变到黑还是从左到右变到黑或者是斜着变?就是由这个属性控制的
android:type 渐变的样式 liner线性渐变 radial环形渐变sweep
shape的内部填充效果
android:color 填充的颜色,这里设置的颜色将会填充到shape内部的所有区域
shape的边缘线效果
android:width 边缘线的宽度
android:color 边缘线的颜色
android:dashWidth 边缘线用虚线,形如“- - - - - - - --”这样的形式。这个属性表示“-”小元素的宽度
android:dashGap边缘线用虚线,形如“- - - - - - - --”这样的形式。这个属性表示“-”小元素之间的间隔距离
shape的棱角圆弧效果(如果不设置该标签,将会默认为尖角效果)
android:radius 圆角的半径
android:topRightRadius 右上圆角半径
android:bottomLeftRadius 右下圆角角半径
android:topLeftRadius 左上圆角半径
android:bottomRightRadius 左下圆角半径
shape的内补偿距离,也就是shape的内部填充物(比如颜色或者图片)距离shape的边缘的距离
android:bottom 底部补偿
android:left 左边补偿
android:right 右边补偿
android:top 上面补偿layer-list:将多个元素按照顺序逐层叠加
如下例子:
-
-
Selector:选择器,内置开发者自己定义的
直接这样解释可能不太好理解,举个例子来说明一下吧:
布局文件中有如下代码:
--------------注释1
my_selector.xml文件:
<?xml version="1.0" encoding="utf-8"?> ----------------注释2 ---------------注释3
上述例子中 image_view的注释1处声明了ImageView的呈现资源是my_selector.xml文件的内容。而在my_selector.xml文件中又声明了两种呈现:1.在按压状态下展示picture1这种图片;2.在默认状态下展示picture2这种图片。
那么当程序跑起来的时候,image_view首先展示的是注释3处的
android:state_selected 是否选中
android:state_focused 是否获得了焦点
android:state_pressed 是否被按下
android:state_enabled 是否可用
在实际应用中,不止存在以上这几种状态,还有很多由上述状态组合起来的复合状态,如下例子:
<?xml version="1.0" encoding="utf-8" ?>
以上例子就是一些复合状态
- 的举例。但这个selector是绝对不可用的,这里需要开发者额外注意一下,下面来分析原因:
系统在selector寻找符合要求的item时是按照代码的顺序从上向下遍历的,一旦发现符合状态的item就直接使用它,并停止继续寻找!所以比如把
这样的item放在第一位的话,那在系统寻找item时,遍历到这个item,它没有指定特殊状态,必然符合状态要求(可以理解为万能钥匙),所以就会直接使用这个item而不再继续向下遍历了。
所以开发者在布置
- 时要注意一下:如果把这些状态理解成集合的话,那么位于下面的集合一定不要是上面某个集合的子集,否则是不会轮到下面这个集合出场的。
更多相关文章
- Android创建和使用数据库详细指南
- Android(安卓)来去电自动录音(一)
- Android开发之Android体系架构介绍
- Android布局文件中控件的高度与宽度属性设置
- Android将胜过Windows Mobile五大原因
- Android(安卓)怎么样使用shape
- Android消息处理机制之Handler
- android 问题总结
- Android大图片裁剪终极解决方案(下:拍照截图)