zoukankan      html  css  js  c++  java
  • Image Button 按下效果

    使用 Button 时为了让用户有“按下”的效果,有两种实现方式:
     1.JAVA代码实现:
     
    imageButton.setOnTouchListener(new OnTouchListener(){     
                            @Override    
                            public boolean onTouch(View v, MotionEvent event) {     
                                    if(event.getAction() == MotionEvent.ACTION_DOWN){     
                                            //更改为按下时的背景图片     
                                            v.setBackgroundResource(R.drawable.pressed);     
                                    }else if(event.getAction() == MotionEvent.ACTION_UP){     
                                            //改为抬起时的图片     
                                            v.setBackgroundResource(R.drawable.released);     
                                    }     
                                    return false;     
                            }     
                    });   
     
     2.XML实现:
     
    <?xml version="1.0" encoding="UTF-8"?>    
    <selector xmlns:android="http://schemas.android.com/apk/res/android ">    
        <item           android:state_pressed="false"  android:drawable="@drawable/button_add" />    
        <item           android:state_pressed="true"   android:drawable="@drawable/button_add_pressed" />    
        <item           android:state_focused="true"    android:drawable="@drawable/button_add_pressed" />    
    <item           android:drawable="@drawable/button_add" />    
    </selector>    
      
    <?xml version="1.0" encoding="UTF-8"?>  
    <selector xmlns:android="http://schemas.android.com/apk/res/android ">  
    <item           android:state_pressed="false"  android:drawable="@drawable/button_add" />  
      
        <item            android:state_pressed="true"  android:drawable="@drawable/button_add_pressed" />  
        <item            android:state_focused="true"  android:drawable="@drawable/button_add_pressed" />  
        <item             android:drawable="@drawable/button_add" />  
    </selector>  
     
    这个文件放在 drawable 目录下面。命名为 button_add_x.xml,使用方法如下:
     
    <ImageButton    
                            android:id="@+id/ImageButton"    
                            android:layout_width="wrap_content"    
                            android:layout_height="wrap_content"    
                            android:background="#00000000"    
                            android:src="@drawable/button_add_x" >    
    </ImageButton>    
    <ImageButton  
                            android:id="@+id/ImageButton"  
                            android:layout_width="wrap_content"  
                            android:layout_height="wrap_content"  
                            android:background="#00000000"  
                            android:src="@drawable/button_add_x" >  
    </ImageButton> 
     
     3.采用Drawable的颜色过滤:
     
    /**   
       * 按下这个按钮进行的颜色过滤   
       */    
      public final static float[] BT_SELECTED=new float[] {      
          2, 0, 0, 0, 2,      
          0, 2, 0, 0, 2,      
          0, 0, 2, 0, 2,      
          0, 0, 0, 1, 0 };     
           
      /**   
       * 按钮恢复原状的颜色过滤   
       */    
      public final static float[] BT_NOT_SELECTED=new float[] {      
          1, 0, 0, 0, 0,      
          0, 1, 0, 0, 0,      
          0, 0, 1, 0, 0,      
          0, 0, 0, 1, 0 };     
           
      /**   
       * 按钮焦点改变   
       */    
      public final static OnFocusChangeListener buttonOnFocusChangeListener=new OnFocusChangeListener() {     
           
      @Override    
      public void onFocusChange(View v, boolean hasFocus) {     
       if (hasFocus) {     
        v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_SELECTED));     
        v.setBackgroundDrawable(v.getBackground());     
       }     
       else    
       {     
        v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_NOT_SELECTED));     
         v.setBackgroundDrawable(v.getBackground());     
       }     
      }     
     };     
          
      /**   
       * 按钮触碰按下效果   
       */    
     public final static OnTouchListener buttonOnTouchListener=new OnTouchListener() {     
      @Override    
      public boolean onTouch(View v, MotionEvent event) {     
       if(event.getAction() == MotionEvent.ACTION_DOWN){     
        v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_SELECTED));     
        v.setBackgroundDrawable(v.getBackground());     
        }     
        else if(event.getAction() == MotionEvent.ACTION_UP){     
         v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_NOT_SELECTED));     
         v.setBackgroundDrawable(v.getBackground());     
        }     
       return false;     
      }     
     };     
          
     /**   
      * 设置图片按钮获取焦点改变状态   
      * @param inImageButton   
      */    
     public final static void setButtonFocusChanged(View inView)     
     {     
      inView.setOnTouchListener(buttonOnTouchListener);     
      inView.setOnFocusChangeListener(buttonOnFocusChangeListener);     
     }    
    /** 
       * 按下这个按钮进行的颜色过滤 
       */  
      public final static float[] BT_SELECTED=new float[] {   
          2, 0, 0, 0, 2,   
          0, 2, 0, 0, 2,   
          0, 0, 2, 0, 2,   
          0, 0, 0, 1, 0 };  
        
      /** 
       * 按钮恢复原状的颜色过滤 
       */  
      public final static float[] BT_NOT_SELECTED=new float[] {   
          1, 0, 0, 0, 0,   
          0, 1, 0, 0, 0,   
          0, 0, 1, 0, 0,   
          0, 0, 0, 1, 0 };  
        
      /** 
       * 按钮焦点改变 
       */  
      public final static OnFocusChangeListener buttonOnFocusChangeListener=new OnFocusChangeListener() {  
        
      @Override  
      public void onFocusChange(View v, boolean hasFocus) {  
       if (hasFocus) {  
        v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_SELECTED));  
        v.setBackgroundDrawable(v.getBackground());  
       }  
       else  
       {  
        v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_NOT_SELECTED));  
         v.setBackgroundDrawable(v.getBackground());  
       }  
      }  
     };  
       
      /** 
       * 按钮触碰按下效果 
       */  
     public final static OnTouchListener buttonOnTouchListener=new OnTouchListener() {  
      @Override  
      public boolean onTouch(View v, MotionEvent event) {  
       if(event.getAction() == MotionEvent.ACTION_DOWN){  
        v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_SELECTED));  
        v.setBackgroundDrawable(v.getBackground());  
        }  
        else if(event.getAction() == MotionEvent.ACTION_UP){  
         v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_NOT_SELECTED));  
         v.setBackgroundDrawable(v.getBackground());  
        }  
       return false;  
      }  
     };  
       
     /** 
      * 设置图片按钮获取焦点改变状态 
      * @param inImageButton 
      */  
     public final static void setButtonFocusChanged(View inView)  
     {  
      inView.setOnTouchListener(buttonOnTouchListener);  
      inView.setOnFocusChangeListener(buttonOnFocusChangeListener);  
     } 
    

      

  • 相关阅读:
    1057. 数零壹(20)
    Docker镜像操作
    Maven 常用操作
    k8s集群搭建(kubadm方式)
    Spring单事务多线程操作引来的问题(Lock wait timeout exceeded; try restarting transaction)
    Centos7 Maven 安装教程
    Centos7 Git安装教程
    Centos7 Docker安装mysql5.7
    Centos7 Docker安装Nginx教程
    SpringBoot启动及配置文件加载原理分析
  • 原文地址:https://www.cnblogs.com/diigu/p/3551701.html
Copyright © 2011-2022 走看看