실행을 하게 되면 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);
    }
     
    }
}