안녕하세요
스톱워치를 예제로 만들어 보았는데
다 잘 되는데
리셋버튼이 오류가 있는거 같습니다.
시간 멈춤후에 리셋하면 잘 되는데
시간이 흐르고 있는 상태에서 리셋을 하면 오류가 나지는 않지만
제대로 동작을 하지 않습니다.
도움 부탁드립니다~
public class MainActivity extends AppCompatActivity {
TextView timer_Item_text_time;
ImageView timer_Item_Play;
ImageView timer_Item_Reset;
final static int INIT = 0;
final static int RUN = 1;
final static int PAUSE = 2;
int curStatus = INIT;
long baseTime, pauseTime;
Handler myTimer = new Handler(){
public void handleMessage(Message msg) {
timer_Item_text_time.setText(getTimeCheck());
myTimer.sendEmptyMessage(0);
}
};
public String getTimeCheck(){
long start = 0;
long now = SystemClock.elapsedRealtime();
long output = start + (now - baseTime);
long h = (output/1000/60/60) % 60;
long m = (output/1000/60) % 60;
long s = (output/1000) % 60;
String outTime = String.format("%02d:%02d:%02d",
h, m, s);
return outTime;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer_Item_text_time = (TextView) findViewById(R.id.timer_Item_text_time);
timer_Item_Play = (ImageView) findViewById(R.id.icon_timer_Item_Play);
timer_Item_Reset = (ImageView) findViewById(R.id.icon_timer_Item_Reset);
//시간 동작
timer_Item_Play.setOnClickListener(new View.OnClickListener() {
public void onClick(View view ) {
if(curStatus == INIT) {
Toast.makeText(getApplicationContext(), "플레이버튼 클릭됨", Toast.LENGTH_LONG).show();
timer_Item_Play.setImageResource(R.drawable.stop1);
timer_Item_Reset.setVisibility(View.VISIBLE);
baseTime = SystemClock.elapsedRealtime();
myTimer.sendEmptyMessage(0);
curStatus = RUN;
}else if(curStatus == RUN){
myTimer.removeMessages(0);
pauseTime = SystemClock.elapsedRealtime();
timer_Item_Play.setImageResource(R.drawable.play1);
curStatus = PAUSE;
}else if(curStatus == PAUSE){
long now = SystemClock.elapsedRealtime();
baseTime +=(now - pauseTime);
myTimer.sendEmptyMessage(0);
timer_Item_Play.setImageResource(R.drawable.stop1);
curStatus = RUN;
}
}
});
timer_Item_Reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "리셋버튼 클릭됨", Toast.LENGTH_LONG).show();
timer_Item_text_time.setText("00:00:00");
timer_Item_Play.setImageResource(R.drawable.play1);
timer_Item_Reset.setVisibility(View.INVISIBLE);
curStatus = INIT;
}
});
}
}