Java 在Android中实现6秒按钮-如何在performClick()中传递变量
我正在建立一个按钮,当触摸时会发出6次嘟嘟声(持续6秒),然后单击。因此,预期的行为是按住按键6秒钟,否则不会触发点击 在stackoverflow.com上回答了过去问题的优秀人员的帮助下,我已经走得相当远了。我点击了onTouch事件,并在6秒后使用performClick 然而,因为我在onTouch事件上返回“true”,所以当我放开按钮时,单击侦听器总是被触发,如果我将其设置为“false”,那么我永远不会得到“ACTION\u UP”。我想到了一种方法,通过在perfromClick中传递变量,比如“powerClick=true”之类,但想不出方法。当用户仅短时间接触时,如何防止单击 ImageButton子类的代码 (我对Android和Java不熟悉,因此我邀请您对我的方法提出任何可能过于“模式错误友好”的见解):Java 在Android中实现6秒按钮-如何在performClick()中传递变量,java,android,Java,Android,我正在建立一个按钮,当触摸时会发出6次嘟嘟声(持续6秒),然后单击。因此,预期的行为是按住按键6秒钟,否则不会触发点击 在stackoverflow.com上回答了过去问题的优秀人员的帮助下,我已经走得相当远了。我点击了onTouch事件,并在6秒后使用performClick 然而,因为我在onTouch事件上返回“true”,所以当我放开按钮时,单击侦听器总是被触发,如果我将其设置为“false”,那么我永远不会得到“ACTION\u UP”。我想到了一种方法,通过在perfromClick
好的,使用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);
}