본문 바로가기
  • We are looking for banner advertisers Please refer to the email below
안드로이드 스튜디오

안드로이드 스튜디오 뒤로가기 버튼 이벤트 - Back Button Event

by 크론크롱 2022. 5. 14.
반응형

디바이스에서의 키 입력에 따라 이벤트 처리는 키 이벤트를 통해 처리할 수 있으며 KeyCode는 어떠한 키가 사용되는지를 구별할 때 사용되고 KeyEvent는 키 입력시 이벤트 정보를 알고자 할때 사용됩니다 키 입력 이벤트는 터치 키패드에서도 동일적용되지만 블루투스 또는 디바이스에서 연결한 키보드 모두 동일하게 이벤트로 처리됩니다

 

OnKey Listner 인터페이스 Key Code 값

키 코드 설명
KEYCODE_DPAD_LEFT 왼쪽 화살표
KEYCODE_DPAD_RIGHT 오른쪽 화살표
KEYCODE_DPAD_UP 위쪽 화살표
KEYCODE_DPAD_DOWN 아래쪽 화살표
KEYCODE_DPAD_CENTER 홈 버튼
KEYCODE_CALL 통화 버튼
KEYCODE_ENDCALL 통화 종료 버튼
KEYCODE_BACK 뒤로 가기 버튼
KEYCODE_VOLUME_UP 볼륨 크게 버튼
KEYCODE_VOLUME_DOWN 볼륨 작게 버튼
KEYCODE_0~9 숫자 0~9 키
KEYCODE_A-Z 알파벳 A~Z 키
KEYCODE_CAMERA 카메라 버튼

위와같이 많은 키 코드로써 구분하고있지만 그중에서도 가장 많이 사용 되는 것은 뒤로가기 버튼으로 onBackPressed() 메서드를 이용하여 이벤트를 처리할 수 있습니다

void onBackPressed()

 

Back Button 선택시 메시지 띄우는 방법

자바 클래스 파일에서 위와같이 소스코드를 입력하도록 합니다

    @Override
    public boolean onKeyDown(int keycode, KeyEvent event) {
        if(keycode ==KeyEvent.KEYCODE_BACK) {
            Toast.makeText(this, "뒤로가기버튼이 눌렸습니다",Toast.LENGTH_LONG).show();
            return true;
        }

        return false;
    }

 

소스코드 입력 후 실행한 화면은 아래와 같습니다

뒤로가기 버튼을 누르게된다면 "뒤로가기버튼일 눌렸습니다" 라는 토스트 문구가 확인됩니다 해당경우에는 뒤로가기 버튼의 본질적인 기능을 막는 기능이 될 수 있으므로 문구만 사용자에게 안내하고, 한번더 누르는 경우 뒤로가기 진행하고자 한다면 아래와같이 소스를 적용합니다

 

처음 뒤로가기 버튼이 누른 경우 시간을 카운트하기 위해 변수를 선언해주고, 한번 눌렸을 때는 메시지를 표현하고 한번 더 누른 경우 앱의 종료되도록 구성되었습니다

 

public class MainActivity extends AppCompatActivity {

    private final long finishtimeed = 1000;
    private long presstime = 0;

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

    @Override
    public void onBackPressed() {
        long tempTime = System.currentTimeMillis();
        long intervalTime = tempTime - presstime;

        if (0 <= intervalTime && finishtimeed >= intervalTime)
        {
            finish();
        }
        else
        {
            presstime = tempTime;
            Toast.makeText(getApplicationContext(), "한번더 누르시면 앱이 종료됩니다", Toast.LENGTH_SHORT).show();
        }
    }

}

위와같이 소스 적용시에 아래와같이 구현됩니다

 

한번 누른 경우는 하단의 Toast 메시지가 확인되고, 두번째 누른경우 앱이 종료된것을 알 수 있습니다

반응형

댓글