zoukankan      html  css  js  c++  java
  • Android_UI_点击按钮切换背景效果实现

    实现按钮按下和释放,按钮背景图片相应切换效果的方法这里介绍两种,一种是在代码里实现,另一种是在xml文件里实现

    一、在xml文件里

    首先现在layout的一个xml文件下定义Button如下所示:

    1. <Button   
    2.     android:id="@+id/btn_user_selected"  
    3.     android:layout_width="wrap_content"  
    4.     android:layout_height="wrap_content"  
    5.     android:background="@drawable/btn_selected/>  

    注意代码里的android:background="@drawable/btn_selected",这里btn_selected是drawable文件下定义button按下释放效果的xml文件
    接下来看btn_selected.xml文件的定义:

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.     <!-- 获得焦点但未按下时的背景图片 -->  
    4.     <item android:state_focused="true" android:state_enabled="true" android:state_pressed="false" android:drawable="@drawable/user_selecte_n" />  
    5.      <!-- 按下时的背景图片 -->  
    6.     <item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/user_selecte_p" />  
    7.     <!-- 按下时的背景图片 -->  
    8.     <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/user_selecte_p" />  
    9.     <!-- 默认时的背景图片 -->  
    10.     <item android:drawable="@drawable/user_selecte_n" />  
    11. </selector>  

    创建xml:点击drawable文件夹右键-->new-->Android XML File-->在File栏里填写xml名称-->Root Element下选择xml的背景选择器selector-->点击finish-->创建成功

    相关属性:

    android:state_selected :选中
    android:state_focused
      :获得焦点
    android:state_pressed
      :点击
    android:state_enabled
      :设置是否响应事件,指所有事件

    selector背景选择器用法大全请跳转到:点击打开链接

     

    二、在java代码里

    1. bottomReturnBtn.setOnTouchListener(new OnTouchListener() {  
    2.       
    3.     public boolean onTouch(View v, MotionEvent event) {  
    4.         Button upStepBtn = (Button) v;  
    5.         if(event.getAction() == MotionEvent.ACTION_DOWN){  
    6.             upStepBtn.setBackgroundResource(R.drawable.bottom_sub_order_btn);  
    7.         }else if(event.getAction() == MotionEvent.ACTION_UP){  
    8.             upStepBtn.setBackgroundResource(R.drawable.bottom_return_check);  
    9.             finish();   
    10.         }  
    11.         return false;  
    12.     }  
    13. });   

    通过监听按钮的不同状态来更改按钮的背景图片

    public boolean onTouch(View v,MotionEvent event){

    }

    参数v:事件源对象

    参数event:事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。

     

    event.getAction() == MotionEvent.ACTION_DOWN   ======>按钮被按下

    event.getAction() == MotionEvent.ACTION_UP                ======>按钮被释放

  • 相关阅读:
    BZOJ-1034: [ZJOI2008]泡泡堂BNB (田忌赛马贪心)
    BZOJ-2190: [SDOI2008]仪仗队 (欧拉函数)
    BZOJ-1864: [Zjoi2006]三色二叉树 (julao都说简单的树形DP)
    BZOJ-2657: [Zjoi2012]旅游(journey) (树形DP求最长链)
    BZOJ-2241: [SDOI2011]打地鼠 (模拟+枚举)
    BZOJ-1207: [HNOI2004]打鼹鼠 (LIS类似DP)
    BZOJ-1821: [JSOI2010]Group 部落划分 Group (二分+并查集)
    BZOJ-1218: [HNOI2003]激光炸弹 (前缀和+模拟)
    [SinGuLaRiTy] ZKW线段树
    [SinGuLaRiTy] 字节大小
  • 原文地址:https://www.cnblogs.com/merryjd/p/2852613.html
Copyright © 2011-2022 走看看