我如何设置ImageButton只在我的手指触摸它时才会更改

问题描述:

我想创建一个事件来更改我的图像按钮的外观,但仅当它被按下时。到目前为止,我一直在使用onTouch监听器,但这只是永久性的改变它。我找不到任何按钮的onKyeUpListener()类型的东西。我如何设置ImageButton只在我的手指触摸它时才会更改

这样的事情是否存在?

解决

final ImageButton button = (ImageButton) findViewById(R.id.ImageButton01); 

    button.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if(event.getAction() == (MotionEvent.ACTION_UP)){ 
       //Do whatever you want after press 
      } 
      else{ 
       //Do whatever you want during press 
      } 
      return true; 
     } 
    }); 

http://developer.android.com/guide/topics/ui/ui-events.html

onTouch()...这被称为当用户执行作为一个合格的触摸事件的动作,包括按压,释放,或屏幕上的任何移动手势(在该项目的范围内)。

换句话说,onTouch也被称为发布事件。看看MotionEvent.getAction()

+0

完美。谢谢。我会在4分钟内接受这个答案。 – NotACleverMan 2010-10-26 22:53:56

+0

与使用StateListDrawable相比,此解决方案过度(如EboMike所述)。 – 2010-10-27 19:00:57

+0

或丹尼尔。事实上,丹尼尔甚至还添加了一个链接。我会接受他的回答。在onTouch中手动执行它是过度杀毒和完全不可靠的。如果用户使用轨迹球选择按钮会怎么样? – EboMike 2010-10-27 20:52:46

它在docs。您可以通过XML为不同的状态定义不同的图像。

而不是手动执行它,为什么不改变按钮的drawable?一般来说,drawable可以有多个状态,所以如果你改变某些状态的drawable(比如focus或selected),操作系统会自动处理所有的东西。