AndroID selector的详解
前言:
StateListDrawable 是一种通过XML文件来定义的drawable,使用几个不同的图片来呈现同一个图形,通过object的状态来实现切换。例如,一个button有几个不同的状态(按压,获取焦点等等),这种情况下,通过使用 state List drawable,你就可以实现在不同的状态下使用不同的背景图片。
你可以在一个XML文件中描述state List。通过在根节点selector下定义一个item元素来添加每个图形。每一各item中使用不同的状态属性来定义不用的drawable。
当每一次状态改变的时候,state List都会从上到下被遍历一遍,第一个与当前state相匹配的item将会被使用―- 这个选择并不是作出“最匹配”结果,而是简单的找到第一个匹配的状态。
selector一般都是用来作为有状态改变的VIEw的背景,以此来达到当用户对VIEw进行 *** 作,导致VIEw状态改变时,作出改变,让用户感知VIEw的状态变化。
官方说明
文件位置:res/drawable/filename.xml
编译资源类型:StateListDrawable
资源引用:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:constantSize=["true" | "false"] androID:dither=["true" | "false"] androID:variablepadding=["true" | "false"] > <item androID:drawable="@[package:]drawable/drawable_resource" androID:state_pressed=["true" | "false"] androID:state_focused=["true" | "false"] androID:state_hovered=["true" | "false"] androID:state_selected=["true" | "false"] androID:state_checkable=["true" | "false"] androID:state_checked=["true" | "false"] androID:state_enabled=["true" | "false"] androID:state_activated=["true" | "false"] androID:state_window_focused=["true" | "false"] /></selector>
更多详细说明,请查阅xsoftlab
实际使用
下面做一个简单的实例,对button的背景根据状态做一下处理
XML文件
selector_ts.xml
<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:drawable="@color/pink" androID:state_pressed="true" /> <item androID:drawable="@color/yellow" androID:state_selected="true" /> <item androID:drawable="@drawable/shaperect" androID:state_enabled="false" /> <item androID:drawable="@color/stone" androID:state_enabled="true" /></selector>
主布局文件(activity_main.xml)
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:focusable="true" androID:focusableIntouchMode="true" androID:orIEntation="vertical" androID:padding="10dp" tools:context="mraz.com.tabdemo.MainActivity"> <button androID:ID="@+ID/bt_content" androID:layout_wIDth="match_parent" androID:layout_height="300dp" androID:background="@drawable/selector_ts" /> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_margintop="50dp" androID:orIEntation="horizontal"> <button androID:ID="@+ID/bt_selected" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_weight="1" androID:text="Select" androID:textAllCaps="false" /> <button androID:ID="@+ID/bt_disable" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_weight="1" androID:text="disable" androID:textAllCaps="false" /> <button androID:ID="@+ID/bt_pressed" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_weight="1" androID:text="Press" androID:textAllCaps="false" /> </linearLayout></linearLayout>
代码部分 比较简单,这里就不占用过多的篇幅了,看下简单的效果,大家应该就知道如何编写小小的Activity了。
实际效果
如有疑问请留言或者到本站社区交流讨论,本站关于AndroID 开发的文章还有很多,欢迎大家搜索查阅,谢谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
总结以上是内存溢出为你收集整理的Android selector的实例详解全部内容,希望文章能够帮你解决Android selector的实例详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)