Java 在Android中实现6秒按钮-如何在performClick()中传递变量

Java 在Android中实现6秒按钮-如何在performClick()中传递变量,java,android,Java,Android,我正在建立一个按钮,当触摸时会发出6次嘟嘟声(持续6秒),然后单击。因此,预期的行为是按住按键6秒钟,否则不会触发点击 在stackoverflow.com上回答了过去问题的优秀人员的帮助下,我已经走得相当远了。我点击了onTouch事件,并在6秒后使用performClick 然而,因为我在onTouch事件上返回“true”,所以当我放开按钮时,单击侦听器总是被触发,如果我将其设置为“false”,那么我永远不会得到“ACTION\u UP”。我想到了一种方法,通过在perfromClick

我正在建立一个按钮,当触摸时会发出6次嘟嘟声(持续6秒),然后单击。因此,预期的行为是按住按键6秒钟,否则不会触发点击

在stackoverflow.com上回答了过去问题的优秀人员的帮助下,我已经走得相当远了。我点击了onTouch事件,并在6秒后使用performClick

然而,因为我在onTouch事件上返回“true”,所以当我放开按钮时,单击侦听器总是被触发,如果我将其设置为“false”,那么我永远不会得到“ACTION\u UP”。我想到了一种方法,通过在perfromClick中传递变量,比如“powerClick=true”之类,但想不出方法。当用户仅短时间接触时,如何防止单击

ImageButton子类的代码 (我对Android和Java不熟悉,因此我邀请您对我的方法提出任何可能过于“模式错误友好”的见解):


好的,使用setEnabled解决了这个问题:

  if (action == MotionEvent.ACTION_DOWN) {
        Log.d("touch", "onTouchEvent: DOWN");
        beepCount = 0;
        isTouch = true;
        timerHandler.postDelayed(timerRunnable, 0);
        setEnabled(false);

    } else if (action == MotionEvent.ACTION_UP) {
        Log.d("touch", "onTouchEvent: UP");

        beepCount = 0;
        isTouch = false;
        timerHandler.removeCallbacks(timerRunnable);
        soundPlayer.playWoosh();
        setEnabled(true);
    }
  if (action == MotionEvent.ACTION_DOWN) {
        Log.d("touch", "onTouchEvent: DOWN");
        beepCount = 0;
        isTouch = true;
        timerHandler.postDelayed(timerRunnable, 0);
        setEnabled(false);

    } else if (action == MotionEvent.ACTION_UP) {
        Log.d("touch", "onTouchEvent: UP");

        beepCount = 0;
        isTouch = false;
        timerHandler.removeCallbacks(timerRunnable);
        soundPlayer.playWoosh();
        setEnabled(true);
    }