zoukankan      html  css  js  c++  java
  • Android——ImageButton按下效果设计

    使用 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);
       } 

     

    转:http://yueguc.iteye.com/blog/939686

  • 相关阅读:
    操作系统演进和未来趋势(附下载)
    用树莓派构建一台服务器,永久运行网站
    用 Docker 构建 MySQL 主从环境
    (一)多线程:线程概述
    网站可访问性的五个自动化测试工具
    个人对前端工程化的理解
    MongoDB安装过程中出现service MongoDB failed to start,verify that you have sufficient privileges to start
    前端开发IDE
    atom插件:js,nodejs,es6补全,高度定制化
    atom离线手动安装atom插件
  • 原文地址:https://www.cnblogs.com/jiezzy/p/2633496.html
Copyright © 2011-2022 走看看