返回介绍

如何设置 ImageButton 按键按下去后的 特效

发布于 2025-02-26 12:46:18 字数 2520 浏览 0 评论 0 收藏 0

如类似风车旋转的动画特效

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文