Android学习笔记(15)---Button点击效果例子(selector使用)

一、在工程的res目录下创建一个文件:drawable,然后在drawable下创建一个select_display_all.xml

看下面代码:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/btn_pressed" android:state_pressed="true"></item>
    <item android:drawable="@drawable/btn_focused" android:state_focused="true"></item>
    <item android:drawable="@drawable/btn_normal"></item>

</selector>


在布局中调用select_diaplay_all.xml

<ImageView
                android:layout_width="280dp"
                android:layout_height="500dp"
                android:layout_gravity="right"
                android:layout_marginRight="15dp"
                android:layout_marginTop="15dp"
                android:background="@drawable/over_listview" />

其中,上面使用的两张图片,即在点击button时两张图片的切换,这时便有了切换的效果。


二、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" />   

最常用的几种视图状态。

1. enabled

表示当前视图是否可用。可以调用setEnable()方法来改变视图的可用状态,传入true表示可用,传入false表示不可用。它们之间最大的区别在于,不可用的视图是无法响应onTouch事件的。

2. focused

表示当前视图是否获得到焦点。通常情况下有两种方法可以让视图获得焦点,即通过键盘的上下左右键切换视图,以及调用requestFocus()方法。而现在的Android手机几乎都没有键盘了,因此基本上只可以使用requestFocus()这个办法来让视图获得焦点了。而requestFocus()方法也不能保证一定可以让视图获得焦点,它会有一个布尔值的返回值,如果返回true说明获得焦点成功,返回false说明获得焦点失败。一般只有视图在focusable和focusable in touch mode同时成立的情况下才能成功获取焦点,比如说EditText。

3. window_focused

表示当前视图是否处于正在交互的窗口中,这个值由系统自动决定,应用程序不能进行改变。

4. selected

表示当前视图是否处于选中状态。一个界面当中可以有多个视图处于选中状态,调用setSelected()方法能够改变视图的选中状态,传入true表示选中,传入false表示未选中。

5. pressed

表示当前视图是否处于按下状态。可以调用setPressed()方法来对这一状态进行改变,传入true表示按下,传入false表示未按下。通常情况下这个状态都是由系统自动赋值的,但开发者也可以自己调用这个方法来进行改变。

源码中button 风格的设置:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_window_focused="false" android:state_enabled="true"

        android:drawable="@drawable/btn_default_normal" />

    <item android:state_window_focused="false" android:state_enabled="false"

        android:drawable="@drawable/btn_default_normal_disable" />

    <item android:state_pressed="true"

        android:drawable="@drawable/btn_default_pressed" />

    <item android:state_focused="true" android:state_enabled="true"

        android:drawable="@drawable/btn_default_selected" />

    <item android:state_enabled="true"

        android:drawable="@drawable/btn_default_normal" />

    <item android:state_focused="true"

        android:drawable="@drawable/btn_default_normal_disable_focused" />

    <item

         android:drawable="@drawable/btn_default_normal_disable" />

</selector>


三、在item中再添加shape,例如:

<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> 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值