안드로이드 개발 질문/답변
(글 수 45,052)
실행을 하게 되면 0:0:10:0 <<<<<<<<<<<처럼 10초에서 부터 시간이 줄어들기 시작하고 0이되면 끝이 납니다.
이것을 00:00:00:00으로 시작해서 StopWatch가 가능하게 만들고 싶은데.. 어떻게 해야될지 모르곘네요.
숫자도 00:00:00:00처럼 두자리씩 나오게 하려고 하는데.. 방법을 못찾겠습니다.
package exam.StopWatch; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; public class StopWatch extends Activity { TextView timeDisplay; Button control; myTimer counter; int state = 0; long length = 10000; long startTime = 0; long currentTime = 0; long timeElapsed = 0; long timeRemaining = 0; long prevTimeRemaining = 0; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); timeDisplay = (TextView)findViewById(R.id.text); control = (Button)findViewById(R.id.control); InitTimer(); } public void InitTimer(){ prevTimeRemaining = 0; counter = new myTimer(length, 40); control.setText("Start"); //timeDisplay.setText("Left:"+Float.valueOf(length)/1000); timeDisplay.setText(""+(length)/1000/60/60%24); timeDisplay.append(":"+(length)/1000/60%60); timeDisplay.append(":"+(length)/1000%60); timeDisplay.append(":"+(length)%1000); state = 0; } public void onClickControlButton(View v){ switch(state){ case 0: startTime = System.currentTimeMillis(); counter.start(); control.setText("Pause"); state = 1; break; case 1: currentTime = System.currentTimeMillis(); timeElapsed = currentTime - startTime; if(prevTimeRemaining==0){ timeRemaining = length - timeElapsed; }else{ timeRemaining = prevTimeRemaining - timeElapsed; } counter.cancel(); timeDisplay.setText(""+(timeRemaining)/1000/60/60%24); timeDisplay.append(":"+(timeRemaining)/1000/60%60); timeDisplay.append(":"+(timeRemaining)/1000%60); timeDisplay.append(":"+(timeRemaining)%1000); control.setText("Restart"); prevTimeRemaining = timeRemaining; counter = new myTimer(timeRemaining, 40); state = 0; break; case 2: InitTimer(); break; } } public class myTimer extends CountDownTimer{ public myTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); // TODO Auto-generated constructor stub } @Override public void onFinish() { // TODO Auto-generated method stub control.setText("set timer"); timeDisplay.setText("End"); state = 2; } @Override public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub //timeDisplay.setText("Left:"+Float.valueOf(millisUntilFinished)/1000); timeDisplay.setText(""+millisUntilFinished/1000/60/60%24); timeDisplay.append(":"+(millisUntilFinished/1000/60)%60); timeDisplay.append(":"+(millisUntilFinished/1000)%60); timeDisplay.append(":"+(millisUntilFinished)%1000); } } }