2

基本的に、カウントダウンタイマーがありますよね?そして、タイマーの残り時間をテキストで表示する必要があります。私はそれを行いましたが、タイマーの時間は少しずれています。これは、00:05:00と表示され、00:04までカウントダウンする通常のデジタル時計のように、残りの秒数を時間と分に変換する必要があるためです。 59。今日は色んなことをしてきましたが、今は頭がかなり痛いので、正確には考えられません。だから私の推測では、60の倍数を使用する必要があると思います。ヘルプ?

コード:

int timeinminutes=1;

    new CountDownTimer(timeinminutes*100000, 1000) {

        TextView mTextField = (TextView) findViewById(R.id.textView1);

         public void onTick(long millisUntilFinished) {
             long hrs=0;
             long mnts=0;
             long scnds=0;
             scnds=(millisUntilFinished/1000);
             if (scnds>59) {
                 mnts=(scnds/60);
                 if (mnts!=Math.floor(mnts)) {
                     mnts=0;
                 }

             }
             if (mnts>59) {
                 hrs=(mnts/60);
                 if (hrs!=Math.floor(hrs)) {
                     hrs=0;
                 }
             }
             mTextField.setText(hrs + ":" + mnts + ":" + scnds);
         }

         public void onFinish() {
             mTextField.setText("00:00:00");
         }
      }.start();
4

2 に答える 2

0

これの多くはすでに行われています。SimpleDateFormatについて読んだ場合、これを解決するための道を歩むのに役立つはずです。

詳細については、こちらもご覧ください。

ここでjava.util.Timerをチェックしてください。

これらはあなたの問題のいずれかを解決するはずです。

于 2013-01-25T20:50:05.053 に答える
0

カウントダウンを実行し、残り時間をミリ秒単位でフィールドとして保持する別のクラスが必要です。このクラスには、1000ミリ秒スリープするスレッドを起動し、残りの時間が0になるまで、元の時間(ミリ秒)から1000を引くメソッドを含めることができます。

次に、1000ミリ秒ごとにTextViewを更新する別のスレッドとSimpleDateFormatを使用して、countdowntimerオブジェクトから残り時間を取得してフォーマットすることができます。

于 2013-01-25T20:57:15.367 に答える