day day up--Android背景选择器selector的使用

来源:互联网 发布:工业企业数据库 161 编辑:程序博客网 时间:2024/04/30 13:14

                在Android开发中,当某个元素例如Button或者ImageView获得焦点时,我们需要它显示出获得焦点(focused)、被按下(pressed)等等的效果,这时候我们可以使用selector选择器来实现。

       Android中配置selector的方法很简单,这里以Button元素的背景选择为例来介绍。准备两张图片(一张未获得焦点btn.png和一张获得焦点的图片btn_on.png),新建一个selector配置的文件例如sl_btn.xml,它们都存放于res/drawable/文件夹内。然后配置Button控件的属性代码如下所示:

  <Button        android:id="@+id/btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/sl_btn"/>

还可以在Java代码中实现,R.drawable.sl_btn引用。其中属性android:background设置为配置文件sl_btn.xml,这点很容易理解,使得Button的背景由配置文件sl_btn.xml来控制,具有很高的灵活性。然后配置sl_btn.xml文件,如下代码所示:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/btn_on" android:state_focused="true"/>    <item android:drawable="@drawable/btn"/></selector>


该选择器有两个item,android:drawable属性表示背景图片,android:state_focused属性为true表示当控件状态是获得焦点时,呈现该item所代表的选择,默认为未获得焦点的,即下面的item的背景为未获得焦点的图片btn.png,上面的item的背景为获得焦点的图片btn_on.png。这样就可以呈现出按钮的动态效果。

这只是简单的selector配置,除了获得焦点,还可以配置其他属性,例如被按下android:state_pressed、被选中android:state_selected等等,可以配置各种状态下的效果。其实在背景切换呈现也就是选择器工作的过程中可以通过shape实现很多动画效果。

0 0