0

私は Android の初心者です (プログラミングを始めて約 1 か月が経ちましたが、ほとんどの時間をこの質問と格闘していたようです!)

タイマーアプリを作ろうとしています。現時点では、タイマーを開始するボタン (もう一度押すと時間を 0 にリセットする) とタイマーを一時停止する停止ボタン (もう一度押すと何もしない) の 2 つのボタンがあります。

これらのボタンに次のことをさせようとしています:

  • ボタン 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));
    }
}

タイマーを一時停止して再開するには、インスタンスの状態を保存して復元する必要があると思います。boolean を使用して、button1 ('start') の onclicklistner を変更する必要があります。タイマーが実行中で、button1 がクリックされた場合、これを実行します。

4

1 に答える 1

0

onTick メソッドで、残りのミリ秒を変数に記録します。次に、2回目にボタンを押すと、 onTick() メソッドで記録した残り時間を使用して新しい CountDownTimer を作成します。

于 2012-07-19T16:46:04.200 に答える