2013-09-27 80 views
1

我正在使用android studio製作倒計時開始時間爲10秒的應用程序。我編寫的代碼,它工作正常,但它只顯示剩餘秒數,現在我想倒計時顯示毫秒。你能幫我嗎? 下面的代碼如何使用秒和毫秒進行倒計時

public class MainActivity extends Activity { 
TextView txtCount; 
Button btnCount; 
int count = 0; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    txtCount = (TextView)findViewById(R.id.textView1); 
    txtCount.setText(String.valueOf(count)); 
    btnCount = (Button)findViewById(R.id.button1); 

    btnCount.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) { 
      count++; 
      txtCount.setText(String.valueOf(count)); 
     } 
    }); 
    final TextView textic = (TextView) findViewById(R.id.textView2); 

    CountDownTimer Count = new CountDownTimer(10000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      int seconds = (int) ((millisUntilFinished/1000)); 

      textic.setText(seconds + "seconds " + millisUntilFinished/1000); 

     } 

     public void onFinish() { 
      textic.setText("TEMPO SCADUTO"); 
     } 
    }; 

    Count.start(); 



} 
+0

相似的問題這裏:http://stackoverflow.com/questions/14669752/android-countdown-timer-display-milliseconds – GVillani82

回答

1

使用求餘運算符,

millisUntilFinished % 1000 

上寫一句話的

textic.setText(seconds + "seconds " + millisUntilFinished/1000 + " ms" + 
millisUntilFinished/1000); 

雖然你的情況的線條,它總是會返回一個0,因爲你的計時器每1000毫秒進行一次滴答。 要獲得更好的照片,請嘗試更小的時間值,例如100 ms或250 ms。

CountDownTimer Count = new CountDownTimer(10000, 100){... 
2
//start button click 
    CountDown timer = new CountDown(180000, 1000); 
    timer.start(); 

//stop button click 
timer.stop(); 

    //countdown class 
    public class CountDown extends CountDownTimer { 

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

      @Override 
      public void onTick(long millisUntilFinished) { 
      long ms = millisUntilFinished; 
      String text = String.format("%02d\' %02d\"", 
             TimeUnit.MILLISECONDS.toMinutes(ms) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(ms)), 
             TimeUnit.MILLISECONDS.toSeconds(ms) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(ms))); 
      textViewTimer.setText(text); 
      } 

      @Override 
      public void onFinish() { 
      textViewTimer.setText("ffinish"); 
      } 
     } 
1

我已經實現與倒計時秒,也考慮CountDownTimer的問題與跳過一秒(https://stackoverflow.com/a/6811744/1225669)毫秒。這個對我有用。

private static final long NUMBER_MILLIS = 20000; 
private static final String MILLISECONDS_FORMAT = "%03d"; 
private int secondsLeft = 0; 

// 
new CountDownTimer(NUMBER_MILLIS, 1) { 

     public void onTick(long millisUntilFinished) {      

       if (Math.round((float)millisUntilFinished/1000.0f) != secondsLeft) 
       { 
        secondsLeft = Math.round((float)millisUntilFinished/1000.0f); 
       } 
       long roundMillis = secondsLeft * 1000; 
       if(roundMillis==NUMBER_MILLIS){ 
        tvTimer.setText(secondsLeft 
          + "." + String.format(MILLISECONDS_FORMAT, 0)); 
       }else { 
        tvTimer.setText(secondsLeft 
          + "." + String.format(MILLISECONDS_FORMAT, millisUntilFinished % 1000)); 
       } 
     } 

     public void onFinish() { 

      tvTimer.setText("done!"); 
     } 
}.start();