0

我有一个计时器,我想在按住按钮时启动,并在我松开时重置计时器。onClick 是可能的,但我真的不知道如何在这个项目中使用 onTouch 事件。第一个代码片段有效,但如何实现触摸而不是点击?

 @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;


        }
    }
4

1 回答 1

0

确保通过添加 @override 注释来覆盖 onTouch,第二个实现肯定不会,因为 onTouch 总是返回布尔值。

确保你接到了触摸电话,没有其他人。将视图的 onTouchListener 设置为您的对象,或者使用您自己的类扩展视图并实现 onTouchEvent

考虑是否需要检查视图是否确实是提到的按钮

还要处理 MotionEvent.CANCEL,因为这种情况时不时发生,然后您可能想要做一些事情。MotionEvent.MOVE 可以跳过,因为当这种情况发生时您不想做任何事情。

onTouch 应该返回它是否处理事件,而不是您的个人计时器的状态。

于 2012-11-28T18:06:43.637 回答