0

我对 Android 很陌生(我已经编程了将近一个月,感觉好像我大部分时间都在与这个问题作斗争!)

我正在尝试创建一个计时器应用程序。目前有两个按钮,一个是启动计时器(如果再次按下它会将时间重置回 0)和一个停止按钮,它会暂停计时器(如果再次按下则什么也不做)。

我正在尝试使这些按钮执行以下操作:

  • 按钮 1 = 如果按下一次启动计时器。如果在计时器运行时按下它会暂停,如果在计时器暂停时按下它会恢复
  • 按钮 2 = 如果按下它会重新启动计时器

我的java代码如下:

    //within on create
    start = (Button)findViewById(R.id.start);

    stop = (Button)findViewById(R.id.stop);
    tv  = (TextView)findViewById(R.id.tv);
    tv.setText("30"); // starting from 30.

    final MyCounter timer = new MyCounter(30000,1000);
    start.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.start();
        }
    });
    stop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.cancel();
        }
    });
}

public class MyCounter extends CountDownTimer{

    public MyCounter(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }

    @Override
    public void onFinish() {
        System.out.println("Timer Completed.");
        tv.setText("Timer Completed.");
    }

    @Override
    public void onTick(long millisUntilFinished  ) {
        tv.setText((millisUntilFinished/1000 + ":" +  millisUntilFinished/100));
        System.out.println("Timer  : " + (millisUntilFinished/1000));
    }
}

我想我将不得不保存和恢复实例状态以暂停和恢复计时器,我将不得不使用布尔值来更改 button1 ('start') 的 onclicklistner,即。如果计时器正在运行并且单击了 button1,请执行此操作。

4

1 回答 1

0

在 onTick 方法中,将剩余的毫秒记录到一个变量中。然后,当您第二次按下按钮时,使用您在 onTick() 方法中记录的剩余时间创建一个新的 CountDownTimer。

于 2012-07-19T16:46:04.200 回答