취소

커뮤니티

가이드

서포트

전체

 

 

퍼갈 때에는 반드시 저작자의 허락과 저작자의 이름(아이디)를 기록하어야 합니다.

저작자는 Snails(tjdtnsu)입니다.

제발 덧글 좀 적어주세요. 강의 적는 시간은 1시간이지만 덧글은 1분도 걸리지 않습니다.

참고 : 이 강좌는 초보자를 위한 Eclipse를 사용하였습니다.

올리는 곳 : 제 네이버 블로그, 디벨로이드 카페

업로드 시간 : 매달 2,4주 오후 11시

 난이도 : ★★★★★

 

 

오늘은 앱 만드는데 거의 필수적인

'~키가 눌렸을 때'와 관련된 코딩을 하겠습니다.

 

그 중 오늘은 백 키를 두 번 눌리면 종료하는 걸 해보겠습니다.     참고자료 : 여기

 

 public class SelectActivity extends Activity {  private static final int MSG_TIMER_EXPIRED = 1;  private static final int Second = 2000;  private boolean K = false;  private long b = 0;

 

 @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_select); }  public void onBackPressed() { 

    if (K == false) {      K = true; 

     mCurrTimeInMillis = Calendar.getInstance().getTimeInMillis();

      Toast.makeText(this, "종료를 원하시면 한번 더 누르세요",       Toast.LENGTH_LONG).show();

      startTimer(); 

    } else {     mIsBackKeyPressed = false;

     if (Calendar.getInstance().getTimeInMillis() <= b+Second ) {       finish();     }    }   }

  

   private void startTimer() {    mTimerHandler.sendEmptyMessageDelayed(MSG_TIMER_EXPIRED,Second);   }

  

   private Handler mTimerHandler = new Handler() {    public void handleMessage(Message msg) {

     switch (msg.what) {     case MSG_TIMER_EXPIRED: {      K = false;     }      break;     }    }   };

 

 

 

이제 해석을 해 봅시다

 

public void onBackPressed() { 

    if (K == false) {      K = true; 

     mCurrTimeInMillis = Calendar.getInstance().getTimeInMillis();

      Toast.makeText(this, "종료를 원하시면 한번 더 누르세요",       Toast.LENGTH_LONG).show();

      startTimer(); 

일단 Back 키가 눌렀을 때

K라는 변수를 통해 다시 눌려졌는지 확인합니다.

K라는 boolean 변수가 참이 아닐 때(시간 내 처음 누를 때시간을 재기 위해서)

K를 참으로 합니다.

그 뒤 현재시간을 넣고

한번 더 누르면 종료된다는 메세지가 출력합니다.

setTimer 함수를 실행하는데, 이게 좀 중요합니다.(좀 있다가)

 

 

 

 

} else {     mIsBackKeyPressed = false;

     if (Calendar.getInstance().getTimeInMillis() <= mCurrTimeInMillis + Second) {       finish();     }    }   }아닐 때는 눌렀는데, 시간 안에 눌려진 상태라는 거겠죠

이것을 확인을 합니다. 여기서 조건이 만족한다면 종료

 

 

 

 

   private void startTimer() {    mTimerHandler.sendEmptyMessageDelayed(MSG_TIMER_EXPIRED,Second);   }

  

   private Handler mTimerHandler = new Handler() {    public void handleMessage(Message msg) {

     switch (msg.what) {     case MSG_TIMER_EXPIRED: {      K = false;     }      break;     }    }   };

마지막 부분입니다. 여기는 시간이 다 되면 다시 K를 false로 만들어놓습니다.

그 외에는 별 부분이.... 없네요

 

 

 

 

 

뭐 어쨌든 도움이 되는 부분이긴 합니다.

다음은 랜덤에 대해 알아보겠습니다.

 

 

 

 

cf) 강좌 할 것 추천해주세요