如何检测按钮的单击,按下和释放状态。我想在这些状态下执行不同的功能。点击我想调用function1,按下我想调用function2,接收后我想调用function3。
我们可以使用View.OnClickListener
检测点击状态。我们可以使用View.OnTouchListener
并处理ACTION_DOWN
和ACTION_UP
来检测按钮的按下和释放状态。我能够单独检测这些状态,但不能一起检测。
以下是OnCLickListener的代码。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println(" clicked ");
}
});
下面是OnTouchListener的代码。
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
System.out.println(" pressed ");
return true;
case MotionEvent.ACTION_UP:
System.out.println(" released ");
return true;
}
return false;
}
});
当我在按钮上设置单击并触摸侦听器时,将永远不会调用Click事件。相反,我接受了压制和释放状态。
我如何一起处理这三种状态?
编辑:
我添加了我使用的OnClickListener和OnTouchListener代码。
答案 0 :(得分:13)
将return true;
内的case MotionEvent.ACTION_DOWN:
和case MotionEvent.ACTION_UP:
更改为return false;
或break;
答案 1 :(得分:7)
由于Button
是View
:
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Pressed
} else if (event.getAction() == MotionEvent.ACTION_UP) {
// Released
}
return true;
}
});
答案 2 :(得分:0)
答案 3 :(得分:-1)
点击事件包括按下和释放状态,如果要点击事件,请在ACTION_UP之后放置方法