Selector选择器的使用

1:把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
      drawable/list_item_bg.xml

 注意 我们的selector的xml文件是放在drawable目录下面。


<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/back_btn_s" android:state_pressed="true"></item>
    <item android:drawable="@drawable/back_btn_n"/> <!-- default --> 
</selector>


上面的就是我们的 selector使用例子

<!-- 默认时的背景图片 -->  
  <item android:drawable="@drawable/pic1" /> 


<!-- 没有焦点时的背景图片 -->  
  <item android:state_window_focused="false"   
        android:drawable="@drawable/pic1" /> 


<!-- 非触摸模式下获得焦点并单击时的背景图片 -->  
  <item android:state_focused="true" android:state_pressed="true"   
        android:drawable= "@drawable/pic2" />  


<!-- 触摸模式下单击时的背景图片 -->  
  <item android:state_focused="false" android:state_pressed="true"   
        android:drawable="@drawable/pic3" />   


<!--选中时的图片背景  -->  
  <item android:state_selected="true"   
        android:drawable="@drawable/pic4" />  


<!--获得焦点时的图片背景  -->  
  <item android:state_focused="true"   
        android:drawable="@drawable/pic5" />   


其次再来看看Button的一些背景效果:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。



注意  自己的归纳总结 :我们在设置selector的时候    我们的focused就是当我们的组件获得焦点的时候   也就是我们的

我们把鼠标只是放在他的上面的时候    但是pressed就是当我们把我们点击组建的那一刻。

enable他可以实现我们的组件被点击之后  长时间的显示一种效果     这个时候  使用setEnable    或者使用电视事件实现我们的效果

selected  这个可以再按钮上面试一下。


注意  我们在使用  enable的时候  一般都是多个组件组成的一个组件集合   这个时候  我们使用enable可以实现我们的让一个组件长期的显示一种状态。

注意:在我们操作  其他组件的时候 我们需要将非选择的组件设置为setEnable设置true  否则下一次在设置的时候  这个组件就是不可用的了


所以  选择器在一个组件的地方 我们是不采用  enable这个属性的


同时一定要记好    我们在操作   ui的时候  一定要在hanler里面实现相关操作

千万不可以在子线程里面直接实现操作  Timer  定时器  好像就是他是一个   内部实现了子线程的方法    记好






<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="#FFF" />
    <item android:state_focused="true" android:color="#FFF" />
    <item android:state_pressed="true" android:color="#FFF" />
    <item android:color="#000" />
</selector>



Button还可以实现更复杂的效果,例如渐变
drawable/button_color.xml
<? xml  version ="1.0"  encoding ="utf-8" ?>
< selector  xmlns:android ="http://schemas.android.com/apk/res/android" >                 /
         < item  android:state_pressed ="true" >//定义当button 处于pressed 状态时的形态。
                 < shape >
                         < gradient  android:startColor ="#8600ff"  />
                         < stroke      android:width ="2dp"  android:color ="#000000"  />
                         < corners  android:radius ="5dp"  />
                         < padding  android:left ="10dp"  android:top ="10dp"
                                          android:bottom ="10dp"  android:right ="10dp" />
                 </ shape >
         </ item >
         < item  android:state_focused ="true" >//定义当button获得 focus时的形态
                 < shape >
                         < gradient  android:startColor ="#eac100" />
                         < stroke      android:width ="2dp"  android:color ="#333333"     color ="#ffffff" />
                         < corners  android:radius ="8dp"  />
                         < padding  android:left ="10dp"  android:top ="10dp"
                                          android:bottom ="10dp"  android:right ="10dp" />
                 </ shape >
         </ item >
</ selector >


 最后,需要在包含 button的xml文件里添加两项。假如是 main.xml 文件,
我们需要在<Button />里加两项。 
     android:focusable="true" 
     android:backgroud="@drawable/button_color"
这样当你使用Button的时候就可以甩掉系统自带的那黄颜色的背景了,实现个性化的背景,配合应用的整体布局非常之有用啊。

选择器在checkbox中的应用


注意  

       此时复选框有四种状态  就是 他是否被选中  他是否获得焦点   获得焦点就是光标放在这个组件上面

       

      具体应用如下

<CheckBox
                                android:id="@+id/cb_quick"
                                android:layout_width="29dp"
                                android:layout_height="29dp"
                                android:background="@drawable/checkbox_btn"
                                android:button="@null" />

   


checkbox_btn.xml



<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!-- @author AnJon.Xiao  多选框背景 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">


    <item android:drawable="@drawable/checkbox_1" android:state_checked="false" android:state_focused="false"/>
    <item android:drawable="@drawable/checkbox_4" android:state_checked="true" android:state_focused="false"/>
    <item android:drawable="@drawable/checkbox_2" android:state_checked="false" android:state_focused="true"/>
    <item android:drawable="@drawable/checkbox_3" android:state_checked="true" android:state_focused="true"/>


</selector>




选择器使用  归纳总结:


注意  我们在使用pressed属性的时候  

针对button可以直接使用  我们不需要在代码里面怎么设置  即可    

但是imageview比较特殊  他是不可以点击的    我们需要此时需要设置他是可以点击的。


所以  我们在选择器里面使用  pressed属性的时候   只要这个组件可点击   我们就不需要设置什么   直接就可以使用 这个选择器


 但是在使用 selected实现我们的选择器的时候  我们就需要使用点击 事件  设置我们的selected实现我们的选择其效果


我们在设置实现单选的时候   使用的原理  类似于RadioGroup   RadioButton    只可以选择一个

这个时候  我们使用的选择器属性就是Enable     enable的特点就是我们点击一个组件只可以点击一次

下一次务必点击其他的组件    从而实现我们的单选效果。


设置selected的时候  可以设置一个组件的状态    选中状态  或者是未选中状态。   这个地方可以设置多选的实现,

通过点击事件来实现


1:经验积累  注意  我们在设置多个选项的时候  我们既可以使checkbox  复选框   也可以使用radiogroup   radiobutton

     来设置我们的选项。       注意 我们的radiobutton是自己设置的  选择     当我们使用checkbox  我们就需要自己给予      设置,

2:

选择器  在radiobutton中的使用    我们这个时候  按钮多了一个状态 ,  就是checked  为真或者假。

这个  时候  我们就可以借助  focused  以及  checked来设置我们选择器给予  这个组件 在各种不同的状态的下  的显示。


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">


    <item android:drawable="@drawable/spot_nor" android:state_checked="false" android:state_focused="false"/>


    <item android:drawable="@drawable/spot_hov" android:state_checked="false" android:state_focused="true"/>
    <item android:drawable="@drawable/ic_launcher" android:state_checked="true" android:state_focused="true"/>
<item android:drawable="@drawable/ic_launcher" android:state_checked="true" android:state_focused="false"/>
</selector>


radiobutton三种状态的实现的xml文件。






































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值