사용자가 폰의 키를 누르는 순간에 발생
키 이벤트를 처리하기 위해서는 콜백 함수를 재정의 해야함
키를 누른 순간의 이벤트
키를 떼는 순간의 이벤트
키를 오래 누르는 순간의 이벤트
class MainActivity : AppCompatActivity() {
...
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
Log.d("test", "onKeyDown")
return super.onKeyDown(keyCode, event)
}
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
Log.d("test", "onKeyUp")
return super.onKeyUp(keyCode, event)
}
}
키 이벤트는 폰에서 제공하는 소프트 키보드의 키를 의미하지 않음
안드로이드 기기의 하드웨어 키보드 또는 안드로이드 시스템 버튼의
이벤트 처리에 사용됨
(뒤로가기 버튼, 볼륨 조절 버튼을 키 이벤트로 인식
-> 전원, 홈, 오버뷰 버튼은 키 이벤트로 처리 X)
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when (keyCode) {
KeyEvent.KEYCODE_BACK -> Log.d("test", "BACK Button")
KeyEvent.KEYCODE_VOLUME_UP -> Log.d("test", "Volume Up")
KeyEvent.KEYCODE_VOLUME_DOWN -> Log.d("test", "Volume Down")
}
return super.onKeyDown(keyCode, event)
}
뒤로가기 버튼 이벤트는 onKeyDown()이나 onKeyUp() 함수 말고,
onBackPressed() 함수를 사용 할 수 있음
override fun onBackPressed() {
Log.d("test", "Back Button")
}
Do it! 깡쌤의 안드로이드 프로그래밍 with 코틀린 (개정판)