안녕하세요 안드로이드 개발을 시작한지 1개월 정도 되는 초보 개발자입니다.
다름이 아니라, 미투데이처럼 메인페이지에서 최초 클릭시 '뒤로'가기 버튼을 한번더 클릭하시면 프로그램이 종료됩니다
라는 Toast가 표시되고, 한번더 클릭시 실지로 프로그램이 종료되는 기능을 구현하는데, 혹시 구현 해 보신분 계신가요?
뒤로가기 2번 클릭에 대한 이벤트는 당연히 없을 것 같고, Toast에 대한 상태를 받아 올수 있는것도 아니고..
아니면 Toast 시작시 타이머를 돌려서
지나간 시간 = 현재시간 - 클릭시간
toast 보여질 시간 = 1초( 1초라 가정하고)
back key 콜백 함수{
if (지나간 시간 < toast 보여질 시간){
//Toast가 보여지는 상태에서 뒤로가기 버튼을 한번 더 한거로 판단.
//프로그램 종료
}
혹시 해 보신분~~
대충 만들어 봤는데 비슷한것 같습니다.
//상단에 선언
private boolean isTwoClickBack = false;
.
.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(keyCode == KeyEvent.KEYCODE_BACK){
if(!isTwoClickBack){
Toast.makeText(this, "'뒤로'버튼을 한번더 클릭 하시면 종료됩니다." , Toast.LENGTH_SHORT).show();
CntTimer timer = new CntTimer(2000, 1);
timer.start();
}else{
finish();
return true;
}
}
}
return false;
}
.
class CntTimer extends CountDownTimer{
public CntTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
isTwoClickBack = true;
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
isTwoClickBack = false;
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
Log.i("Test"," isTwoClickBack " + isTwoClickBack);
}
}




단순히 boolean flag 하나 세우시는 건 어떠세요.
back눌렸을때 true 놓고 간단한 스레드 하나 켜서 시간이 지나면 다시 false로 변경