안드로이드 개발 질문/답변
(글 수 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);
}
}
}


