`
marine8888
  • 浏览: 543590 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    好的-Android2.2 API中文文档——ImageButton.doc

    Android2.2 API中文文档——ImageButton.doc

    安卓Android源码——ImageButton.rar

    - `StateListDrawable`: `android:src` 支持状态列表,可以根据按钮的状态(如按下、焦点等)显示不同的图像,优化交互体验。 6. **自定义扩展** 开发者可以通过继承 `ImageButton` 并重写相关方法来自定义自己的...

    Android2.2 API 中文文档系列(7) —— ImageButton

    ### Android2.2 API中文文档系列(7)—— ImageButton #### 概述 在本篇文档中,我们将深入了解`ImageButton`这一控件的基本特性和高级用法。`ImageButton`是`ImageView`的一个子类,继承了`ImageView`的所有功能...

    安卓Android源码——(ImageButton图片按钮).rar

    这个压缩包文件"安卓Android源码——(ImageButton图片按钮).rar"很可能是包含了一个示例项目,展示了如何在Android应用中使用`ImageButton`来实现图片按钮的功能。下面我们将深入探讨`ImageButton`的相关知识点。 1...

    安卓Android源码——(ImageButton图片按钮).zip

    如果需要更复杂的交互效果,可以继承 `ImageButton` 并重写其 `onTouchEvent` 方法来自定义触摸行为,或者使用第三方库如 `androidx.appcompat.widget.AppCompatImageButton` 来获取 Material Design 风格的动画...

    ImageButton Android开发实例

    Android开发实例——ImageButton源代码,图像修饰按钮的一个例子,Andorid手机上的程序界面设计都挺漂亮,这一个ImageButton也是很不错的例子。例子中包括所用到的图像资源,很不错。

    android 应用 源代码——图片按钮 免费

    在Android应用开发中,图片按钮(Image Button)是一种常见的用户界面元素,它结合了图片和按钮的功能,使得用户可以通过点击图片来...通过学习和实践这些代码,开发者可以提升自己的Android UI设计和交互实现能力。

    android——API中文文档

    这些控件是构建Android应用程序界面的基础元素,通过掌握它们的功能与用法,开发者可以更好地设计用户界面,提供优秀的用户体验。 ### 1. TextView #### 结构 TextView继承自`android.view.View`,用于显示静态...

    安卓Android源码——带图片的按钮源码.zip

    本资源“安卓Android源码——带图片的按钮源码.zip”提供了实现这一功能的具体代码示例,方便开发者进行学习和参考。 在Android中,我们可以使用`Button`或`ImageButton`组件来实现带有图片的按钮。`Button`主要...

    安卓动画效果相关-Android源码——棒棒糖风格的pincode库效果.rar

    总结,"安卓动画效果相关-Android源码——棒棒糖风格的pincode库效果"是一个关于Android自定义视图和动画效果的实例,它展示了如何通过源码实现一个生动且用户友好的PIN码输入界面。学习这个库的源码,可以帮助...

    Android源码——多种android控件的Demo_new_40.7z

    这份"Android源码——多种android控件的Demo_new_40.7z"资源,正是一个深入学习Android控件应用的宝库。通过分析其中的代码和示例,我们可以深入理解Android开发中的各种控件及其用法,从而提升我们的编程技能。 在...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——...

    安卓Android源码——仿赶集生活android客户端的介绍动画界面.rar

    这个压缩包"安卓Android源码——仿赶集生活android客户端的介绍动画界面.rar"提供了仿制赶集生活安卓客户端启动时的介绍动画界面的源代码,这对于我们了解如何在Android应用中实现吸引用户的动态效果具有很大的参考...

    带图片的按钮ImageButton源码

    陆陆续续完成了ImageView和Button控件的讲解之后,我们设想在Android中有没有...答案是——有的,本节内容我就来介绍这个ImageView和Button的和产物ImageButton。课程见:http://www.ourunix.org/android/post/126.html

    Google Android SDK开发范例大全的目录

    4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右...

Global site tag (gtag.js) - Google Analytics