zoukankan      html  css  js  c++  java
  • Android_按钮被按下效果的实现(selector选择器)

    在很多刚入门的新手在开发实例的过程中,经常会遇到要按下某个ImageView时,需要加入确认感的时候.需要在按下的时候,控制ImageVIew内图片的显示.

    在我是新手的时候,也这样做过.
    所以这里简单介绍一下selector选择器的使用.

    首先定义需要准备两张图片,一张不按下去的,一张是按下去的.
    分别叫做button_unpressed.png 和button_pressed.png
    把他们放大drawable文件目录下(与要开发应用需要的分辨率文件夹中).

     

    1. <?xml version="1.0" encoding="utf-8" ?>     
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android">   
    3. <!-- 默认时的背景图片 -->    
    4.   <item android:drawable="@drawable/pic1" />      
    5. <!-- 没有焦点时的背景图片 -->    
    6.   <item android:state_window_focused="false"     
    7.         android:drawable="@drawable/pic1" />     
    8. <!-- 非触摸模式下获得焦点并单击时的背景图片 -->    
    9.   <item android:state_focused="true" android:state_pressed="true"     
    10.         android:drawable= "@drawable/pic2" />    
    11. <!-- 触摸模式下单击时的背景图片 -->    
    12.   <item android:state_focused="false" android:state_pressed="true"     
    13.         android:drawable="@drawable/pic3" />     
    14. <!--选中时的图片背景  -->    

    如果你的工程的res文件目录下没有drawable文件(不带分辨率).则需要新建一个drawable文件夹(不带分辨率)
    新建一个xml文件,取名叫做 button_selector.xml
    xml代码如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item              
              android:state_pressed="false"
              android:drawable="@drawable/button_unpressed" /> 
        <item 
              android:state_pressed="true"
              android:drawable="@drawable/button_pressed" /> 
    
    </selector>
    

    这样我们的selector选择器就配置好了.

    然后接下来,我们就可以需要使用它;

    1
    2
    3
    4
    5
    6
    7
    8
    <Button
                android:id="@+id/setting"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/button_selector"
    
    
                />
    

    然后运行效果看看吧.

    注意: selector文件 不管是在xml中或者是代码中使用方法 跟调用图片的方式是一样的.
    某些组件使用selector是不会有效果的.例如ImageView组件,因为ImageView是非焦点组件.不会获取

    屏幕焦点.所有的非焦点组件都不会响应selector内定义的内容.

  • 相关阅读:
    ASP学习笔记
    Access restriction: The type 'BASE64Encoder'
    hdu2094:产生冠军(判断有环图)
    hdu1533:Going Home(KM匹配)
    hdu2112:HDU Today(最短路)
    hdu2112:HDU Today(最短路)
    hdu2813:One fihgt one(KM匹配)
    hdu2813:One fihgt one(KM匹配)
    hdu2236:无题II(枚举+匈牙利算法)
    hdu2236:无题II(枚举+匈牙利算法)
  • 原文地址:https://www.cnblogs.com/fx2008/p/3146077.html
Copyright © 2011-2022 走看看