티스토리 뷰
뒤로가기 버튼을 이용한 팝업창 종료예제는 다음의 게시물에 있습니다.
오늘은 안드로이드 폰에 있는 뒤로 가기 버튼 ( Back Button )을 터치했을 때의 이벤트에 대해서 알아보겠습니다. 백 버튼 이벤트는 사용자가 의도치 않게 눌렀을 경우를 위해서 주로 사용자 의견을 다시 묻는 용도로 사용되고 있습니다.
안드로이드 백 버튼 이벤트 예제
안드로이드 폰에는 거의 다 뒤로가기 버튼 즉, 백 버튼이 있기 때문에 안드로이드 스튜디오 자체에서 제공해주는 Class가 있어 가져다가 즉, Override 해서 사용하기만 하면 됩니다.
1 2 3 4 | @Override public void onBackPressed() { super.onBackPressed(); } | cs |
제공되어 있는 onBackPressed()를 Override 하였습니다. 이제 이 안에 백 버튼을 두 번 누르면 어플에서 나가지게끔 코드를 작성해 보겠습니다. 만들기 위해서 내용을 먼저 살펴보겠습니다. 백 버튼을 2번 누르면 어플에서 나가져야 합니다. 여기서 살펴볼것이 한 번 누르고나서 시간이 엄청 지난뒤 한 번 더 눌러 나가져 버리면 안되니 그 텀(시간)을 정해 주어야합니다. 따라서 한 번 누른 뒤 몇 초 안에 다시 누를시 어플이 종료된다는 Toast 메시지를 띄우겠습니다. 이를 위해 우선 처음 눌렀을 당시의 시간이 필요합니다.
1 | long first_time = System.currentTimeMillis(); | cs |
System.currentTimeMillis() 는 시스템의 현재 시간을 밀리 초로 바꾼 값을 알려줍니다. 따라서 int로는 공간이 부족할 수 있으므로 long 형식으로 선언을 해주었습니다. 이제 두 번째 클릭했을 때의 시간을 second_time에 받아오도록 해보겠습니다.
1 | long second_time = System.currentTimeMillis(); | cs |
첫 번째 시간과 두 번째 시간을 받아오는 코드를 작성하였습니다. 이제 두 코드의 위치를 적절히 배치하여 if문을 통한 코드를 작성해 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | long first_time; long second_time; @Override public void onBackPressed() { second_time = System.currentTimeMillis(); Toast.makeText(MainActivity.this, ""+second_time, Toast.LENGTH_SHORT).show(); if(second_time - first_time < 2000){ super.onBackPressed(); finishAffinity(); } first_time = System.currentTimeMillis(); } | cs |
Second를 먼져 받아오는것 같지만 두 번째 이벤트시 Second 값을 다시 갱신하고 First 값과 비교가 되는것을 보실 수 있습니다. 다음으로 밀리 초 단위이므로 2초인 2000을 적어 2초안에 다시 누를시 종료되게 하였습니다. 마지막으로 finishAffinity();를 보실 수 있는데 finish()를 사용하셔도 되지만 백 버튼을 누른다는건 어플을 완전히 종료할 것이라는 사용자의 생각이므로(더군다나 1번 물어보기까지 했으니!) finish 보다 강력한 finishAffinity를 사용하였습니다.
'안드로이드' 카테고리의 다른 글
[안드로이드] TextView 사용(활용,효과) 예제 (0) | 2017.04.19 |
---|---|
[안드로이드] ImageView(이미지 뷰) 사용 예제 (0) | 2017.04.18 |
[안드로이드] GridLayout 재정렬하기 (1) | 2017.04.17 |
[안드로이드] EditText, TextView 전환하기 (0) | 2017.04.17 |
[안드로이드] Intent 사용 간단하게 email 보내기 (0) | 2017.04.16 |
- Total
- Today
- Yesterday