我有一个计时器,我想在按住按钮时启动,并在我放手时重置计时器。有可能使用onClick但我无法真正弄清楚如何在这个项目中使用onTouch事件。第一个代码片段工作,但如何实现触摸而不是以asy方式单击?
@Override
public void onClick(View v)
{
if (!timerHasStarted)
{
countDownTimer.start();
timerHasStarted = true;
startB.setText("Start");
}
else
{
countDownTimer.cancel();
timerHasStarted = false;
startB.setText("RESET");
}
}
public boolean onTouch(View v, MotionEvent event) {
final float mouseSensitivity = 0.5f;
if(event.getAction()==MotionEvent.ACTION_DOWN){
countDownTimer.start();
timerHasStarted = true;
} else if(event.getAction()==MotionEvent.ACTION_UP){
countDownTimer.cancel();
timerHasStarted = false;
}
return timerHasStarted; } }
public void onTouch(View v, MotionEvent event) {
// final float mouseSensitivity = 0.5f;
if(event.getAction()==MotionEvent.ACTION_DOWN){
countDownTimer.start();
timerHasStarted = true;
} else if(event.getAction()==MotionEvent.ACTION_UP){
countDownTimer.cancel();
timerHasStarted = false;
}
}
答案 0 :(得分:0)
确保你通过addind @override注释覆盖onTouch,第二个实现肯定不会,因为onTouch总是返回boolean。
确保您接到来电,而没有其他人。将视图的onTouchListener设置为您的对象,或者使用您自己的类扩展View并实现onTouchEvent
考虑是否需要检查视图实际上是提到的按钮
还要处理MotionEvent.CANCEL,因为这种情况时不时发生,你可能想要做一些事情。可以跳过MotionEvent.MOVE,因为在发生这种情况时你不想做任何事情。
onTouch应该返回它是否处理事件,而不是个人计时器的状态。