您的位置:首页 > 移动开发 > Android开发

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

2014-07-08 08:25 656 查看
                在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实现很多动画效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息