如何检测按钮的点击、按下和释放状态。我想对这些状态执行不同的功能。单击时我想调用函数 1,按下时我想调用函数 2,接收时我想调用函数 3。
我们可以使用 View.OnClickListener
检测点击状态。我们可以使用 View.OnTouchListener
并处理 ACTION_DOWN
和 ACTION_UP
来检测 Button 的按下和释放状态。我能够单独检测到这些状态,但是不能一起检测。
下面是 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;
}
});
当我在 Button 上设置点击和触摸监听器时,Click 事件永远不会被调用。相反,我收到按下和释放状态。
如何同时处理这三种状态?
编辑:
我添加了我使用过的 OnClickListener 和 OnTouchListener 代码。
最佳答案
很简单,因为 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;
}
});
关于android - 按钮上的单击、按下和释放事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520044/