1. android默认的Imagebutton按下去之后没有一点变化,实在让人受不了。这次在重新写摄像头相关的demo时,特意学习了这方面的内容。

    第一种方法:

    1. 前文http://blog.csdn.net/yanzi1225627/article/details/7814392这是一种思路,可以用美图秀秀将同一个图片做成不同的灰度/色调效果,保存成同样大小的图片,然后利用http://blog.csdn.net/yanzi1225627/article/details/7814392这里设置成点击显示不同色调灰度的同一副图片。

    第二种方法:

    1. 还是同样的思路,只不过不是在xml文件里,而是在java程序里更改点击显示不同图片,如下:
    1. imageButton.setOnTouchListener(new OnTouchListener(){
    2. @Override
    3. public boolean onTouch(View v, MotionEvent event) {
    4. if(event.getAction() == MotionEvent.ACTION_DOWN){
    5. //更改为按下时的背景图片
    6. v.setBackgroundResource(R.drawable.pressed);
    7. }else if(event.getAction() == MotionEvent.ACTION_UP){
    8. //改为抬起时的图片
    9. v.setBackgroundResource(R.drawable.released);
    10. }
    11. return false;
    12. }
    13. });

    第三种方法:

    1. 这也是我采用的方法。前两种方法在按键多的情况下用起来很不方便,当然不排除个别情况下就需要显示不同的图片。这里用颜色矩阵的方法,只需一张照片,就可以实现效果。且这个效果可以往任何一个ImageButton上绑定。代码如下:
    1. /*为了使图片按钮按下和弹起状态不同,采用过滤颜色的方法.按下的时候让图片颜色变淡*/
    2. public class MyOnTouchListener implements OnTouchListener{
    3. public final float[] BT_SELECTED=new float[]
    4. { 2, 0, 0, 0, 2,
    5. 0, 2, 0, 0, 2,
    6. 0, 0, 2, 0, 2,
    7. 0, 0, 0, 1, 0 };
    8. public final float[] BT_NOT_SELECTED=new float[]
    9. { 1, 0, 0, 0, 0,
    10. 0, 1, 0, 0, 0,
    11. 0, 0, 1, 0, 0,
    12. 0, 0, 0, 1, 0 };
    13. public boolean onTouch(View v, MotionEvent event) {
    14. // TODO Auto-generated method stub
    15. if(event.getAction() == MotionEvent.ACTION_DOWN){
    16. v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_SELECTED));
    17. v.setBackgroundDrawable(v.getBackground());
    18. }
    19. else if(event.getAction() == MotionEvent.ACTION_UP){
    20. v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_NOT_SELECTED));
    21. v.setBackgroundDrawable(v.getBackground());
    22. }
    23. return false;
    24. }
    25. }
    1. 可以用我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