Android 如何同时监听Touch和onClick事件?

Android 如何同时监听Touch和onClick事件?,android,Android,我有一个按钮和一个显示数字的文本标签。我想单击按钮将标签编号添加到按钮。我还想启用按住按钮一段时间,然后开始连续添加数字。如果longclick事件添加了数字,则click事件将不会执行任何操作。我如何实现这一点 像这样使用自定义的TouchListener(这是非常基本的,在浏览器中编写,而不是在IDE中编写): 我想你可以用e.getDownTime()代替startTime,但我只是在文档上读,从来没有真正使用过。这是哪个函数?您传递的参数是时间间隔。无论如何,我认为您在if(touch)

我有一个按钮和一个显示数字的文本标签。我想单击按钮将标签编号添加到按钮。我还想启用按住按钮一段时间,然后开始连续添加数字。如果longclick事件添加了数字,则click事件将不会执行任何操作。我如何实现这一点

像这样使用自定义的
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
}