原文:http://keeganlee.me/post/android/0830
以下摘取了部分内容:
shape
一般用shape定义的xml文件存放在drawable目录下,若项目没有该目录则新建一个,而不要将它放到drawable-hdpi等目录中。只需要在对应控件设置(bg_rectangle_with_stroke_dash.xml)
android:background="@drawable/bg_rectangle_with_stroke_dash"
四种类型
使用shape可以自定义形状,可以定义下面四种类型的形状,通过android: shape属性指定:
rectangle: 矩形,默认的形状,可以画出直角矩形、圆角矩形、弧形等oval: 椭圆形,用得比较多的是画正圆line: 线形,可以画实线和虚线ring: 环形,可以画环形进度条
selector
有时候,不同状态下改变的不只是背景、图片等,文字颜色也会相应改变。而要处理这些不同状态下展示什么的问题,就要用selector来实现了。 一个<item/>包裹一个状态和对应的效果
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><!-- 当前窗口失去焦点时 --><item android:drawable="@drawable/bg_btn_lost_window_focused" android:state_window_focused="false" /><!-- 不可用时 --><item android:drawable="@drawable/bg_btn_disable" android:state_enabled="false" /><!-- 按压时 --><item android:drawable="@drawable/bg_btn_pressed" android:state_pressed="true" /><!-- 被选中时 --><item android:drawable="@drawable/bg_btn_selected" android:state_selected="true" /><!-- 被激活时 --><item android:drawable="@drawable/bg_btn_activated" android:state_activated="true" /><!-- 默认时 --><item android:drawable="@drawable/bg_btn_normal" /></selector>
而下面则是text_btn_selector.xml的代码,用于按钮的文本颜色:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><!-- 当前窗口失去焦点时 --><item android:color="@android:color/black" android:state_window_focused="false" /><!-- 不可用时 --><item android:color="@android:color/background_light" android:state_enabled="false" /><!-- 按压时 --><item android:color="@android:color/holo_blue_light" android:state_pressed="true" /><!-- 被选中时 --><item android:color="@android:color/holo_green_dark" android:state_selected="true" /><!-- 被激活时 --><item android:color="@android:color/holo_green_light" android:state_activated="true" /><!-- 默认时 --><item android:color="@android:color/white" /></selector>
Layer-List
使用layer-list可以将多个drawable按照顺序层叠在一起显示,像上图中的Tab,是由一个红色的层加一个白色的层叠在一起显示的结果
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><!-- 第一种加载方式 --><!--<item android:drawable="@drawable/bg_tab_selected" android:state_checked="true" />--><!-- 第二种加载方式 --><item android:state_checked="true"><layer-list><!-- 红色背景 --><item><color android:color="#E4007F" /></item><!-- 白色背景,白色背景距离底部越远,漏出来的红色部分就越多 --><!-- 效果就是看到的粗的红色的线 --><item android:bottom="4dp" android:drawable="@android:color/white" /></layer-list></item><item><layer-list><!-- 红色背景 --><item><color android:color="#E4007F" /></item><!-- 白色背景 --><item android:bottom="1dp" android:drawable="@android:color/white" /></layer-list></item></selector>
属性
solid:设置形状填充的颜色padding:内容与形状边界的内间距gradient: 设置形状的渐变颜色,可以是线性渐变、辐射渐变、扫描性渐变corners: 设置圆角,只适用于rectangle类型stroke: 设置描边,可描成实线或虚线size:设置形状默认的大小,可设置宽度和高度动画
视图动画的xml文件放于res/anim/目录下,,引用时为R.anim.filename。<animator>属性动画的xml文件则放于res/animator/目录下。用引用时为R.animator.filenameStyle
Android的样式一般定义在res/values/styles.xml文件中,其中有一个根元素<resource>,而具体的每种样式定义则是通过<resource>下的子标签<style>来完成,<style>通过添加多个<item>来设置样式不同的属性。另外,样式是可以继承的,可通过<style>标签的parent属性声明要继承的样式,也可通过点前缀 (.) 继承,点前面为父样式名称,后面为子样式名称。点前缀方式只适用于自定义的样式,若要继承Android内置的样式,则只能通过parent属性声明。样式的用法不只是用于单个View,也能用于Activity或整个Application,这时候需要在相应的<activity>标签或<application>标签里设置android:theme属性,引用的其实也是style,但一般称为主题。如果觉得《android自定义样式大全:shape selector layer-list style 动画全部内容》对你有帮助,请点赞、收藏,并留下你的观点哦!