`
惜忆隐蝶
  • 浏览: 2665 次
  • 性别: Icon_minigender_1
  • 来自: 湖南衡阳
社区版块
存档分类
最新评论

Android - ImageButton单击切换按钮图片效果的实现

阅读更多
Android - ImageButton单击切换按钮图片效果的实现

在Android中有一个ImageButton的View,跟Button按钮的区别是可以在Imagebutton上加载一个图片。
从ImageButton这个字面意思上来看,它是一个图片按钮,那么我们就可以使用它做一个我们想要的图片按钮了,但是我们在实际使用的过程当中,就会发现该按钮的使用并没有想像中的那么简单,需要再增加一些代码或再配置XML才能实现图片按钮按下的效果,个人感觉有点麻烦,不知道google为什么这么做?



我们来看一下如何实现
实现图片按钮按下的效果有两种方式可以实现:一是增加代码,二配置XML。
一、在java中为图片按钮增加触摸监听的函数来实现图片切换,代码如下:
[java] view plain copy
ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);         
btn.setOnTouchListener(new View.OnTouchListener(){           
    public boolean onTouch(View v, MotionEvent event) {              
            if(event.getAction() == MotionEvent.ACTION_DOWN){      
               //重新设置按下时的背景图片 
               ((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.android_btn_pressed));                             
            }else if(event.getAction() == MotionEvent.ACTION_UP){      
                //再修改为抬起时的正常图片 
                ((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.android_btn));    
            } 
            return false;      
    }      
}); 
代码比较简单,就是当图片按下时,修改按钮的背景图片,当抬起时再修改为正常的图片显示。
二、通过给按钮配置XML文件来实现图片按钮的背景切换效果,方法如下:
1) 在Layout下增加一个image_btn_press.xml文件,内容如下:
[html] view plain copy
<?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/android_btn" /> 
     <item android:state_focused="true" android:drawable="@drawable/android_btn" /> 
     <item android:state_pressed="true" android:drawable="@drawable/android_btn_pressed" />  
</selector>  
在这个文件中可以设置按钮图片的正常时的图片、具有焦点时的图片和按下时的图片。在本例中将按钮的正常图片和焦点图片设置成同样的效果了。
或者你也可以将state_focused的整个属性行删除。
另外,该XML配置文件不一定要存放在layout的目录下,您也可以存放在drawable的目录下。

2) 在main.xml中设置图片按钮的属性,装上面的xml文件增加到图片按钮中,内容如下:
[html] view plain copy
<ImageButton 
    android:id="@+id/imageButton2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@layout/image_btn_press" /> 
在ImageButtonk中指定background的属性值:@layout/image_btn_press,其中image_btn_press就是上面为该图片铵钮创建的XML配置文件,文件名不要写错了。同时,你也可以将image_btn_press.xml文件放到drawable的目录下,此时,就要将它的属性值修改为:@drawable/image_btn_press即可,也就是说指定它的XML文件的正确路经就行了。
另外,需要特别注意的是:在ImageButton中,如果使用XML配置文件来设置图片的效果的话,就不要再指定它的android:src=""属性值了,否则图片的按下效果就出不来了。
这两种方法各有各的好处,在实际运用过种当种可以根据自己的需要进行选择。

附上面实例的源代码下载:http://download.csdn.net/detail/ztp800201/4106649
该源代码分别使用了两种的方法实现了图片按钮的效果。其中上面的图片按钮是用代码实现的,下面的图片是用XML实现的。
0
0
分享到:
评论

相关推荐

    android下imagebutton换图片

    以上就是Android中`ImageButton`换图片的基本方法,通过合理使用`selector`和监听器,我们可以轻松实现按钮按下和弹起时的图片切换效果,提升用户交互体验。如果你有`test_lzy`这个压缩包文件,里面可能包含了一些...

    实现跟踪鼠标单击状态的图片按钮

    实现一个跟踪鼠标单击状态的图片按钮,主要是通过监听按钮的按下和释放事件,来改变按钮的显示状态,以提供用户友好的交互体验。下面我们将详细探讨如何在Android中实现这一功能。 首先,我们需要在布局文件(如...

    简单标题栏

    `PopupMenu`是Android提供的一个轻量级弹出菜单,可以在单击按钮后从按钮的右侧或底部弹出。以下是使用`PopupMenu`的例子: ```java private void showPopupMenu(View v) { PopupMenu popup = new PopupMenu(this,...

    计算机发展与计算机应用概述.pdf

    计算机发展与计算机应用概述.pdf

    计算机二级公共基础知识全集合.pdf

    计算机二级公共基础知识全集合.pdf

    计算机机试答案.pdf

    计算机机试答案.pdf

    基于STM32F103的750W全桥逆变器并离网设计方案及其实现

    内容概要:本文详细介绍了基于STM32F103RCT6的750W全桥逆变器设计方案,涵盖硬件电路设计、软件编程以及保护机制等方面。硬件部分包括主控芯片的选择、PWM配置、Boost升压电路、PCB布局优化等;软件部分涉及并离网切换的状态机设计、过流保护、风扇控制算法、并机功能实现等。文中还分享了许多实战经验和调试技巧,如死区时间配置、电流采样方法、并网同步算法等。 适合人群:具有一定电子电路和嵌入式开发基础的技术人员,尤其是从事逆变器及相关电力电子产品开发的工程师。 使用场景及目标:适用于希望深入了解逆变器工作原理和技术实现的开发者,特别是那些需要掌握并离网切换、高效电源管理及可靠保护机制的人群。目标是帮助读者构建一个稳定可靠的逆变器系统,能够应对各种复杂的工作环境。 其他说明:本文不仅提供了详细的理论讲解,还有丰富的代码片段和实践经验分享,有助于读者更好地理解和应用相关技术。

    基于Simulink的单相全桥逆变器仿真与优化:MATLAB环境下的详细实现

    内容概要:本文详细介绍了如何利用Simulink在MATLAB环境中搭建单相全桥逆变器的仿真模型。首先,通过构建H桥结构,连接直流电源和RL负载,并引入PWM控制器进行开关管的控制。接着,针对仿真过程中遇到的各种问题,如谐波失真、开关管直通等问题,提出了具体的解决方案,包括加入LC滤波器、设置死区时间和优化PWM参数等。此外,还探讨了通过MATLAB脚本自动化测试不同参数组合的方法,以及如何提高电压利用率和降低谐波失真。最终,通过对仿真结果的分析,验证了所提方法的有效性和优越性。 适合人群:电力电子工程师、科研人员、高校学生等对逆变器仿真感兴趣的群体。 使用场景及目标:适用于研究和开发高效、稳定的逆变器系统,旨在通过仿真手段减少实验成本,优化设计方案,提高系统的性能指标。 其他说明:文中提供了详细的建模步骤和技术细节,帮助读者更好地理解和掌握相关技术和方法。同时,强调了仿真参数的选择和优化对于获得理想仿真结果的重要性。

    计算机红外通信.pdf

    计算机红外通信.pdf

    软考考试学习必备资料.md

    软考考试学习必备资料.md

    基于cornerstonejs开发移动端

    基于cornerstonejs开发移动端

    JavaScript网页设计高级案例:构建交互式图片画廊#JavaScript

    构建交互式图片画廊

    在学习Wpf的过程中,手搓了一个2048

    源码

    Bosch Rexroth IndraWorks Ds IndraWorks Ds 14V16.310.0

    Bosch Rexroth IndraWorks Ds IndraWorks Ds 14V16.310.0

    java面向对象 - 类与对象

    java面向对象 - 类与对象

    电机控制领域无感FOC算法的AT32平台实现及其鲁棒性优化

    内容概要:本文详细介绍了基于AT32平台的无感FOC(Field-Oriented Control)控制算法,特别是针对永磁同步电机(PMSM)和无刷直流电机(BLDC)的位置速度观测器实现。文章首先展示了启动策略的独特之处,即跳过传统前馈强拖阶段,直接利用矢量控制环和观测器协同启动。接着深入探讨了磁链观测器的核心算法,包括磁链积分、反正切求角度以及速度估算部分使用的改良版PLL。此外,文中还提到了容差配置模块,用于提高系统的鲁棒性和稳定性。最后,强调了模块间良好的解耦设计,使得各功能模块拥有明确的输入输出接口,增强了代码的可维护性和移植性。 适合人群:从事电机控制系统开发的技术人员,尤其是对无感FOC算法感兴趣的工程师。 使用场景及目标:适用于需要高精度、快速响应的电机控制系统开发项目,旨在提升系统的鲁棒性和稳定性,特别是在电机参数存在偏差的情况下依然能够保持良好性能。 其他说明:文章不仅提供了详细的代码实现,还分享了许多实用的经验和技术细节,如启动策略、磁链观测器的物理本质、速度估算方法等,有助于读者更好地理解和应用无感FOC算法。

    计算机机房de设置与维护.pdf

    计算机机房de设置与维护.pdf

    《Java 面试进阶指北 》 质量很高,专为面试打造

    《Java 面试进阶指北 》 质量很高,专为面试打造

    外转子开关磁阻电机多目标优化的NSGA-II算法实现与Matlab代码解析

    内容概要:本文详细介绍了外转子开关磁阻电机(ER-SRM)的多目标优化方法,主要采用NSGA-II算法进行优化。文章首先解释了为什么ER-SRM比传统内转子电机更难以优化,接着展示了如何利用NSGA-II算法解决这一难题。文中提供了详细的Matlab代码,包括种群初始化、交叉变异操作、非支配排序以及目标函数的定义。此外,还讨论了优化过程中的一些注意事项,如初始种群多样性的保持、交叉变异参数的选择、目标函数的设计等。最后,通过具体的案例和图表展示了优化结果及其应用价值。 适合人群:从事电机设计与优化的研究人员和技术人员,尤其是对外转子开关磁阻电机感兴趣的读者。 使用场景及目标:适用于需要同时优化电机效率、转矩波动和制造成本等多种目标的情况。通过NSGA-II算法,可以在多个相互冲突的目标间找到最佳平衡点,从而提高电机的整体性能。 其他说明:文章不仅提供了完整的Matlab代码实现,还分享了许多实践经验,如参数设置的经验公式、常见错误及解决方案等。这对于理解和掌握NSGA-II算法的实际应用非常有帮助。

Global site tag (gtag.js) - Google Analytics