android默认的Imagebutton按下去之后没有一点变化,实在让人受不了。这次在重新写摄像头相关的demo时,特意学习了这方面的内容。
第一种方法:
前文http://blog.csdn.net/yanzi1225627/article/details/7814392这是一种思路,可以用美图秀秀将同一个图片做成不同的灰度/色调效果,保存成同样大小的图片,然后利用http://blog.csdn.net/yanzi1225627/article/details/7814392这里设置成点击显示不同色调灰度的同一副图片。
第二种方法:
还是同样的思路,只不过不是在xml文件里,而是在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上绑定。代码如下:
/*为了使图片按钮按下和弹起状态不同,采用过滤颜色的方法.按下的时候让图片颜色变淡*/
public class MyOnTouchListener implements OnTouchListener{
public final 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 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 boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
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;
}
}
可以用我http://blog.csdn.net/yanzi1225627/article/details/8577756这里的图片测试下,ImageButton按下后会有类似风车旋转的动画特效。
核心参考:
http://blog.sina.com.cn/s/blog_972ddc1b010113df.html
http://www.cnblogs.com/xiaowenji/archive/2011/02/04/1949165.html
http://blog.csdn.net/sytzz/article/details/5673662
分享到:
相关推荐
在深入理解`ImageButton`的工作原理后,可以更有效地运用它来提升应用的用户体验。 1. **ImageButton概述**: `ImageButton`继承自`ImageView`,并且添加了点击事件处理功能。与普通的`Button`相比,`ImageButton`...
在android中有一个ImageButton的View,跟Button按钮的区别是可以在Imagebutton上加载一个图片。 从ImageButton这个字面意思上来看,它是一个图片按钮,那么我们就可以使用它做一个我们想要的图片按钮了,但是我们在...
在Windows应用程序开发中,自定义控件是一种常见的需求...开发者可以根据需求调整其行为,如添加鼠标悬停效果、按下状态变化等,以增强用户体验。同时,了解如何使用GDI+进行图形绘制也是提升.NET开发能力的重要一环。
`ImageButton`支持各种触摸事件,如按下、滑过、松开等。可以通过`OnTouchListener`获取更精细的触摸控制,例如: ```java imageButton.setOnTouchListener(new View.OnTouchListener() { @Override public ...
`ImageButton`可以与其他视图组件一起放置在各种布局容器中,如`LinearLayout`、`RelativeLayout`或`ConstraintLayout`,以构建复杂的用户界面。 8. **响应区域**: 默认情况下,`ImageButton`的响应区域与图片...
在Android开发中,`ImageButton`是一个非常常用的组件,它继承自`ImageView`,但增加了点击事件的支持,使得我们可以将图片与交互功能结合在一起。这个"Android ImageButton图片按钮Demo源码.rar"应该包含了一个完整...
Android 提供了 `StateListDrawable` 来根据按钮的状态(如按下、聚焦等)显示不同的图像。在 `res/drawable` 目录下创建一个 XML 文件,例如 `button_states.xml`,然后在 `ImageButton` 的 `android:src` 属性中...
可以利用Android的动画框架为`ImageButton`添加动画效果,比如按下时的缩放、旋转等,增强用户体验。 ### 7. 适配不同屏幕尺寸 为了确保`ImageButton`在不同分辨率的设备上表现一致,应考虑使用密度无关像素(dp)...
这里的`android:src`属性用于设置显示的图片资源,通常是一个选择器(selector),以便在不同的状态下(如按下、默认、焦点等)展示不同的图片。 接下来,我们可以通过Java代码来操控`ImageButton`,例如添加点击...
在标准的`Button`控件中,我们通常可以设置`Image`属性来显示图像,但当按钮大小改变时,图像不会自动适应。为了实现图像拉伸,我们需要在自定义的`ImageButton`控件中处理`Paint`事件。在`Paint`事件的处理函数中,...
在许多应用界面设计中,我们经常需要为 `ImageButton` 设置不同的图片以实现不同的功能状态,例如:按下时显示一张图片,弹起时显示另一张图片,以提供更直观的用户反馈。下面我们将详细讨论如何在Android中实现`...
这段代码中,我们为`ImageButton`添加了一个触摸监听器,当用户按下按钮时,图像切换为`pressed_image`,松开后恢复为`normal_image`。 实现动画效果: 为了使图片切换更加平滑,我们可以使用动画。Android提供了`...
然后,在代码中加载这个过渡动画,并设置给`ImageButton`: ```java TransitionDrawable transitionDrawable = (TransitionDrawable) getResources().getDrawable(R.drawable.transition_image); imageButton....
在实际应用中,`ImageButton`常用于导航栏、工具栏、设置菜单等,提供直观且简洁的操作入口,如播放/暂停按钮、返回按钮等。 总结,`ImageButton`是Android开发中一个实用的组件,它结合了图像展示和交互功能,为...
可以为`ImageButton`添加点击时的动画效果,如淡入淡出、旋转等,通过`android:state_listAnimator`属性或者在代码中动态设置`ObjectAnimator`。 7. **图片资源优化** 在Android开发中,为了适应不同分辨率的设备...
但在`ImageButton`中,还可以设置`android:background`属性,用于定义按钮的背景,这通常是一个选择器(`selector`),以实现不同状态下的视觉效果,如按下、焦点等。 ```xml <ImageButton android:id="@+id/image...
在res/anim目录下创建两个动画文件,例如`button_press_in.xml`(按下动画)和`button_press_out.xml`(抬起动画),然后在Java代码中设置: ```java Animation pressIn = AnimationUtils.loadAnimation(context, R...
结合实际项目需求,`ImageButton`可以用于实现如导航栏图标、设置按钮、返回按钮等功能。在设计时要注意图标的清晰度、颜色搭配和交互反馈,确保用户能够直观地理解按钮的用途。 综上,`Imagebutton`是Android UI...
本文将深入探讨`ImageButton`的基本概念、使用方法、属性设置以及实际应用场景,帮助开发者更好地理解和运用这个控件。 ### 一、基本概念 `ImageButton`是一个专门用于显示图像,并可以响应用户点击事件的视图。与...