2013-09-27 2 views
1

10 초부터 시작되는 카운트 다운이있는 앱에 대해 android studio와 협력 중입니다. 내가 코드를 작성하고 잘 작동하지만 남은 초만 보여줍니다, 이제 카운트 다운에 밀리 초를 보여주고 싶습니다. 도와 줄수있으세요? 당신의 타이머이기 때문에 여기 코드초 단위 및 밀리 초 단위로 카운트 다운하는 방법

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

사용 나머지 연산자, 귀하의 경우 비록

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

의 라인에

millisUntilFinished % 1000 

쓰기 뭔가 항상 0을 반환합니다 1000 밀리 초마다 똑딱 거린다. 더 나은 그림을 얻으려면 100 밀리 초 또는 250 밀리 초와 같은 더 작은 티커 시간 값으로 실험하십시오.

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

나는 초 일초 (https://stackoverflow.com/a/6811744/1225669)를 건너 뛰는으로도 CountDownTimer의 문제를 고려 밀리 초 단위로 카운트 다운을 구현했습니다. 그것은 나를 위해 작동합니다.

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(); 
관련 문제