1. Event Model
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when(keyCode){
KeyEvent.KEYCODE_0 -> Log.d("key", "0번 키가 눌렸어요")
KeyEvent.KEYCODE_A -> Log.d("key", "A 키가 눌렸어요")
}
return super.onKeyDown(keyCode, event)
}
유저가 키를 누름 → onKeyDown 함수가 call → 매개변수로 키 코드값 전달 → 키 코드값으로 유저가 어떤 키를 눌렀는지 알 수 있음 → 이벤트 진행
※ 카카오톡 등 앱에서 글자를 입력할 때의 키보드는 Soft Keyboard라고 한다. 앱에서 Soft Keyboard는 단지 버튼일 뿐이다. 따라서 Key Event가 작동하지 않는다.
※ 그럼 Key Event는 언제 쓰이냐? 안드로이드 핸드폰 하단의 back, home, overview 버튼과 기기에 power, volume up/down 버튼을 System Button이라고 한다. 이 버튼들이 안드로이드에서 키 이벤트로 처리가 된다. 특히 back 버튼 처리에 많이 사용된다.
override fun onTouchEvent(event: MotionEvent?): Boolean {
when(event?.action){ //action 속성으로 이벤트 종류 확인
MotionEvent.ACTION_DOWN -> {
// ...
}
MotionEvent.ACTION_UP -> {
// ...
}
}
return super.onTouchEvent(event)
}
유저가 액티비티 화면을 터치 → onTouchEvent 함수가 call → 매개변수로 터치한 지점의 좌표값이나 터치 이벤트의 종류가 전달 → 매개변수를 활용해 다양한 업무 로직 구현
override fun onTouchEvent(event: MotionEvent?): Boolean {
when(event?.action){
MotionEvent.ACTION_DOWN -> {
Log.d("location x", "Touch down event... x:${event.x}, rawX:${event.rawX}")
}
}
return super.onTouchEvent(event)
}
button.setOnClickListener(object : View.OnClickListener {
override fun onClick(p0: View?){
// ...
}
})
button.setOnClickListener {
// ...
}