首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

Android——ImageButton按停效果设计

2013-03-26 
Android——ImageButton按下效果设计使用Button时为了让用户有“按下”的效果,有两种实现方式:1.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;                             }                     });    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);   }  

?使用时,调用方法:public final static void setButtonFocusChanged(View inView)即可。

?

FROM:?http://blog.csdn.net/sytzz/archive/2010/06/16/5673662.aspx

热点排行