1.首先在drawable目录下创建一个XML文件,文件名任意,如下(test_check.xml):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/dust_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/dust_normal" android:state_pressed="false"/>
</selector>
文件是有一定格式的:1.根标签是selector;2.该xml文件的命名空间必须是“http://schemas.android.com/apk/res/android“。在selector中可以定义有多个item,每一个item表示控件的一个状态,以及在该状态下的属性。如:
<item android:drawable="@drawable/dust_pressed" android:state_checked="true"/>
上述语句就表示指定控件如果被点击,那么背景图片就是dust_selected,如果在一般情况下,那么背景图片就是dust_selected。下面来看一下,item有哪些属性,如下:
android:state_pressed "true"表示按下状态使用 "false"表示非按下状态使用
android:state_focused "true"表示聚焦状态使用 "false"表示非聚焦状态使用
android:state_selected "true”表示选中状态使用 "false"表示非选中状态使用
android:state_checkable "true"表示可勾选状态时使用 "false"表示非可勾选状态使用
android:state_checked "true"表示勾选状态使用 "false"表示非勾选状态使用
android:state_enabled "true"表示可用状态使用 "false"表示不可用状态使用
android:window_focused "true"表示应用程序窗口有焦点时使用 "false"表示无焦点时使用
除了上面的特征属性外,item还有其他属性,如下:
android:drawable="@drawable/dust_selected" 该属性表示与指定的图片资源关联,作为背景图片
2.将文件与指定的控件关联,如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/button_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Test"
android:background="@drawable/test_check"/>
</LinearLayout>
通过设置属性
android:background即可将其与指定的xml文件关联起来,从而使得button拥有该文件中所定义的特征。
3.运行程序,在上述的程序中,当我们点击按钮Test时,背景图片为dust_pressed,而当我们松开按钮或处于一般状态下,其背景图片为dust_normal。