Android 我如何设置一个ImageButton,使其仅在我的手指触摸时更改

Android 我如何设置一个ImageButton,使其仅在我的手指触摸时更改,android,image,onclick,imagebutton,Android,Image,Onclick,Imagebutton,我想创建一个事件来更改我的图像按钮的外观,但仅当它被按下时。到目前为止,我一直在使用onTouch侦听器,但这只是永久性地改变了它。我找不到类似于onKyeUpListener()类型的按钮 有这样的事吗 已解决 final ImageButton button = (ImageButton) findViewById(R.id.ImageButton01); button.setOnTouchListener(new View.OnTouchListener() {

我想创建一个事件来更改我的图像按钮的外观,但仅当它被按下时。到目前为止,我一直在使用onTouch侦听器,但这只是永久性地改变了它。我找不到类似于onKyeUpListener()类型的按钮

有这样的事吗

已解决

    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;
        }
    });
发件人:

onTouch()。。。当用户执行符合触摸事件条件的操作时,会调用此操作,包括按下、释放或屏幕上的任何移动手势(在项目范围内)


换句话说,
onTouch
也被调用用于发布事件。查看
MotionEvent.getAction()

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

与其手动操作,为什么不更改按钮的可绘制性?一般来说,可绘制文件可以有多个状态,因此如果您更改某些状态(如聚焦或选定)的可绘制文件,操作系统将自动为您处理所有事情。

与使用StateListDrawable(如EboMike所述)或Daniel相比,此解决方案的杀伤力过大。事实上,丹尼尔甚至添加了一个链接。我会接受他的回答。在onTouch中手动执行此操作是过分的,而且完全不可靠。如果用户用轨迹球选择你的按钮呢?是的,我回答了检测释放事件的低级问题,但对于为不同状态选择不同图像的高级问题,其他两个答案更好。由于这个问题实际上更多的是关于高级别问题,我同意其他答案更为正确。不幸的是,我不想删除我的答案,因为它已经被接受了。