Android 如何同时监听Touch和onClick事件?
我有一个按钮和一个显示数字的文本标签。我想单击按钮将标签编号添加到按钮。我还想启用按住按钮一段时间,然后开始连续添加数字。如果longclick事件添加了数字,则click事件将不会执行任何操作。我如何实现这一点 像这样使用自定义的Android 如何同时监听Touch和onClick事件?,android,Android,我有一个按钮和一个显示数字的文本标签。我想单击按钮将标签编号添加到按钮。我还想启用按住按钮一段时间,然后开始连续添加数字。如果longclick事件添加了数字,则click事件将不会执行任何操作。我如何实现这一点 像这样使用自定义的TouchListener(这是非常基本的,在浏览器中编写,而不是在IDE中编写): 我想你可以用e.getDownTime()代替startTime,但我只是在文档上读,从来没有真正使用过。这是哪个函数?您传递的参数是时间间隔。无论如何,我认为您在if(touch)
TouchListener
(这是非常基本的,在浏览器中编写,而不是在IDE中编写):
我想你可以用e.getDownTime()代替startTime,但我只是在文档上读,从来没有真正使用过。这是哪个函数?您传递的参数是时间间隔。无论如何,我认为您在if(touch)else{..}下编写的代码永远不会被调用,因为action\u up后面必须跟着action\u down事件。如果您按住手指,action\u down将被调用多次。当您抬起手指时,将调用“向上/取消”操作。onLongClick(long)是您实现的一种方法,您将有一段时间来了解按钮按下的时间。
boolean touching = false;
long startTime = 0;
@Override
public boolean onTouchEvent(MotionEvent e) {
switch (e.getAction()) {
case MotionEvent.ACTION_DOWN:
if(touching){
onLongClick(System.currentTimeMillis() - startTime)
}else{
touching = true;
startTime = System.currentTimeMillis;
onClick();
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
touching = false;
break;
}
return true;
}
onLongClick(long elapsedTime){
//Do stuff
}