스마트 폰을 사용할 때 터치를 제일 많이 한다. 터치도 다양하게 한다.
이런 동작들은 터치 이벤트 콜백 함수인 onTouchEvent()
를 선언해서 사용한다.
- 콜백 함수 : 어떤 이벤트가 발생하거나 시점에 도달했을 때 시스템에서 자동으로 호출하는 함수
액티비티에서 onTouchEvent()
를 오버라이딩해서 선언하면 해당 액티비티 화면에서 터치하는 순간 자동으로 호출된다.
onTouchEvent()
: 매개변수로 MotionEvent
객체를 가지며, 터치의 종류와 발생 지점(좌표값)을 가진다.앞서 말한 것처럼 터치의 종류도 다양하다.
ACTION_DOWN
: 화면을 손가락으로 누른 순간의 이벤트ACTION_UP
: 화면에서 손가락을 떼는 순간의 이벤트ACTION_MOVE
: 화면을 손가락으로 누른 채로 이동하는 순간의 이벤트화면을 눌렀다 떼면 onTouchEvent()
함수가 2번 호출된다. 왜냐하면 누를 때 ACTION_DOWN
뗄 때 ACTION_UP
이벤트가 호출되기 때문이다.
터치 이벤트를 처리 예시
로그를 찍어 확인해보면 ACTION_DOWN
과 ACTION_UP
이 찍히는 것을 확인할 수 있다.
터치 이벤트 좌표값도 얻을 수 있는데
x
: 이벤트가 발생한 뷰의 X 좌표y
: 이벤트가 발생한 뷰의 Y 좌표rawX
: 화면의 X 좌표rawY
: 화면의 Y 좌표터치 이벤트 발생 좌표값 얻기 예시
화면이 눌렸을 때 좌표값만 얻으면 되기 때문에 ACTION_UP
은 제외한다.
터치 이벤트는 게임이나 화면에 뭔갈 그리는 앱을 만들 때는 자주 사용되겠지만 일반적으로 뷰가 터치되는 이벤트에서는 따로 제공되는 것이 있기 때문에 해당 부분에서는 사용되지 않는다.
키 이벤트로 처리할 수 있는 것은 Navigation Bar(홈, 뒤로가기, 오버뷰) 중에서 뒤로가기와 볼륨 조절 버튼을 처리할 수 있다.
onKeyDown
: 키를 누른 순간의 이벤트onKeyUp
: 키를 떼는 순간의 이벤트onKeyLongPress
: 키를 오래 누르는 순간의 이벤트뒤로가기, 볼륨 조절 이벤트 처리 예시
근데 뒤로가기에 대한 이벤트 처리에는 onBackPressed()
함수도 따로 제공되는데 사용법은 크게 다르지 않다.
뷰 이벤트에 대한 처리는 다음 포스트에서...