lang
1public class HeartBeatActivity extends Activity{ 2 //必要なものを抜粋 3 private Button timer; 4 private HeartBeat beat; //SurfaceViewを継承したクラス 5 private class PreCountDown extends CountDownTimer{ 6 private final String text = "測定開始まで: "; 7 private int count = 3; 8 9 public PreCountDown(){ 10 super(3000, 1000); 11 timer.setOnClickListener(new View.OnClickListener() { 12 13 @Override 14 public void onClick(View v) { 15 cancel(); 16 beat.setMode(HeartBeat.MODE_NOTHING); 17 timer.setText(R.string.timer); 18 timer.setOnClickListener(HeartBeatActivity.this); 19 Toast.makeText(getApplicationContext(), "キャンセルされました", Toast.LENGTH_LONG).show(); 20 } 21 }); 22 } 23 24 @Override 25 public void onTick(long millisUntilFinished) { 26 timer.setText(text + count); 27 Log.d("count", String.valueOf(count)); 28 Log.d("until", String.valueOf(millisUntilFinished)); 29 count--; 30 } 31 32 @Override 33 public void onFinish() { 34 beat.setMode(HeartBeat.MODE_TIMER); 35 timer.setText("計測中止"); 36 } 37 } 38 //後略 39}
ボタンtimerを押した際に,3秒の予告カウントダウンをボタンに表示する仕組みを作っています.
こちらの意図としては,ボタンに「測定開始まで: 3」の「3」が1秒毎に「2」「1」となり,
その後「計測中止」という表示を出したいのです.
ところが実際に動かしてみると,「3」→「2」のあとおよそ2秒表示の変更がなく,
「計測中止」の表示になってしまいます.
どういうことかとonTickのログで確かめたところ,
04-19 00:57:51.079: D/count(20028): 3
04-19 00:57:51.079: D/until(20028): 2962
04-19 00:57:52.090: D/count(20028): 2
04-19 00:57:52.090: D/until(20028): 1961
と,2回しかonTickが呼ばれていません(残り約1秒の段階でのonTickが呼ばれない).
untilの値は多少ブレがありますが,それぞれ2950前後,1950前後になります.
目的の動作を得るにはどうすればよいでしょうか.教えてください.よろしくお願いいたします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/19 06:45