系统的Drawable(二)-Selector
系统的Drawable(二)-Selector
Selector漫谈
Selector是定义 StateListDrawable 的标签,该Drawable代表着一个Drawable的集合,每一个Drawable都对应着View的一个状态,系统会根据View的状态来选择相应的Drawable,该Drawable常常会被用于做View的背景。通过 <Item> 标签来定义View对象的状态。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/white_color" android:state_pressed="true" />
<item android:drawable="@drawable/blue_color" android:state_pressed="false" />
</selector>
Android系统Drawable

Selector的属性
constantSize
表示StateListDrawable的固有大小是否会随着状态的改变而改变,状态的切换会导致切换到不同的Drawable,而不同的Drawable有不同的固有大小。此属性是一个布尔值,true表示StateListDrawable的固有大小保持不变,StateListDrawable的固有大小为Drawable集合的固有大小的最大值,false表示StateListDrawable的固有大小根据Drawable的不同而改变。默认为false。
dither
开启抖动效果,开启后可以让图片在低质量的屏幕上仍然有较好的显式效果,默认为true
variablePadding
StateListDrawable的padding属性是否会根据状态的改变而改变,true表示会根据状态的改变而改变,false表示不会跟随状态的改变而改变,此时StateListDrawable的padding的最大值,是Drawable集合的最大值。默认为false,不建议开启。
Item
代表View的状态和与状态相对应的Drawable。一个View主要以下的状态,每一个状态都是一个布尔值。
| 状态 | 描述 |
|---|---|
| android:state_activated | 表示View是否处于激活状态 |
| android:state_active | 当一个View被视为是活动的 |
| android:state_checkabl | 是否是可以被想选中的,用于ChekBox |
| android:state_checked | CheckBox/RadioButton是否被选中 |
| android:state_enabled | View 是否是可用状态 |
| android:state_first | 当一个视图为有序列表的第一个元素的时候 |
| android:state_focused | 当View获得焦点的时候 |
| android:state_last | 当一个视图为有序列表的最后一个元素的时候 |
| android:state_middle | 当View位于有序集合的中间位置时 |
| android:state_pressed | View是否被按压 |
| android:state_selected | View是否被选中 |
| android:state_single | State value for StateListDrawable, set when a view or drawable is considered "single" by its host. |
| android:state_window_focused | 当Window获得焦点时 |
系统的Drawable(二)-Selector的更多相关文章
- 系统的Drawable(四)-LayerListDrawable
系统的Drawable(四)-LayerListDrawable 学习自 https://blog.csdn.net/u014695188/article/details/52815444 Layer ...
- 修改Android系统字号(二)
/*********************************************************************** * 修改Android系统字号(二) * 说明: * ...
- Android系统--输入系统(十二)Dispatch线程_总体框架
Android系统--输入系统(十二)Dispatch线程_总体框架 1. Dispatch线程框架 我们知道Dispatch线程是分发之意,那么便可以引入两个问题:1. 发什么;2. 发给谁.这两个 ...
- 系统的Drawable(一)
系统的Drawable(一) 学习自 <Android 开发艺术探索> <官方文档> https://www.cnblogs.com/popfisher/p/6238119.h ...
- 我是如何一步步编码完成万仓网ERP系统的(二)前端框架
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- linux系统基础(二)
磁盘管理(一) Linux设备认识 /dev/cdrom /dev/sr0 /dev/mouse /dev/sda /dev/hda IDE硬盘(支持4块):hd(a-d) [非IDE硬盘]SCSI硬 ...
- Swift:使用系统AVFoundation实现二维码扫描和生成
系统提供的AVCaptureSession仅仅适用于iOS7.0以上的系统.之前的请用Zbar来替代 下载地址:http://download.csdn.net/detail/huobanbengku ...
- DHCP服务原理与搭建(Linux系统+路由器,二选一方案)
大家都知道上网的最基本前提是要在终端上设置IP.子网掩码.网关.DNS等地址信息,在家里或者在办公室很多时候打开电脑后发现就可以上网,并没有手动设置IP.掩码.DNS地址也能上网,这是什么原因呢?其实 ...
- ThinkPHP开发博客系统笔记之二
1. 登陆验证码 当用户登陆的时候我们希望也弹出验证码,有两种方法可以实现:一是再增加一个弹出验证码的dialog,二是和注册共用一个验证码dialog.第一种方法有大量重复代码,所以我们使用第二种方 ...
随机推荐
- C++委托模式
希望想理解C++委托的同学,能够从代码中悟出其中的原理.有什么不太清楚的地方,欢迎留言交流. #include <bits/stdc++.h> using namespace std; # ...
- Spark记录-Scala字符串
Scala字符串 在Scala中的字符串和Java中的一样,字符串是一个不可变的对象,也就是一个不能修改的对象.可以修改的对象,如数组,称为可变对象.字符串是非常有用的对象,在本节的最后部分,我们将介 ...
- 前端 ajax 改写登录界面
SSM 整合项目开发到一个阶段,想慢慢地把前台框架等技术引入进来 突然碰到一个困惑好久的问题: ajax 替换原本 form 表单 post 提交登录: 一直 404 错误,心塞.... 最后发现原来 ...
- 在Emacs中启用Fcitx输入法
安装fcitx输入法,在 ~/.xinitrc文件中添加如下内容 (我用startx启动图形环境,所以在~/.xinitrc中配置X会话) export LC_CTYPE="zh_CN.UT ...
- CS229 笔记04
CS229 笔记04 Logistic Regression Newton's Method 根据之前的讨论,在Logistic Regression中的一些符号有: \[ \begin{eqnarr ...
- svn 更新代码
SVN 更新代码 --force # 强制覆盖 /usr/bin/svn --username user --password passwd co $Code ${SvnPath}src/ # 检出整 ...
- c++ 函数指针简单实例
一开始看函数指针的时候我是很懵的,因为不知道它有什么用,之后慢慢就发现了自己的愚昧无知. 假设我们想实现一个数据结构,比如二叉搜索树,堆.又或者是一个快排,归并排序. 我们一般是直接在两个数要比较的时 ...
- Valid Parentheses & Longest Valid Parentheses
Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', det ...
- linux 如何删除文件夹下面的文件和文件夹,只保留两个文件
# 删除目录下那两个文件之外的所有文件 find dir/ -type f ! -name file1 -a ! -name file2 | xargs rm -f # 删除所有空目录(非空目录不 ...
- 模板引擎--hogan
学习地址:https://www.imooc.com/article/18493 Hogan的github地址镇楼:https://github.com/twitter/hogan.js
