앱은 사용자의 터치를 인식하고 화면을 터치했는지,
스와이프 했는지에 따라 동작하도록 구현됨
터치 이벤트의 콜백 함수
앱의 화면에서 발생하는 사용자의 터치 이벤트 처리
※콜백 함수 - 어떤 이벤트가 발생하거나 시점에 도달했을 때
시스템에서 자동으로 호출하는 함수
class MainActivity : AppCompatActivity() {
...
override fun onTouchEvent(event: MotionEvent?): Boolean {
return super.onTouchEvent(event)
}
}
함수의 매개변수는 MotionEvent 객체이며,
이 객체에 터치의 종류와 발생 지점 값이 들어있음
화면을 손가락으로 누른 순간의 이벤트
화면에서 손가락을 떼는 순간의 이벤트
화면을 손가락으로 누른 채로 이동하는 순간의 이벤트
override fun onTouchEvent(event: MotionEvent?): Boolean {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
Log.d("test", "Touch down event")
}
MotionEvent.ACTION_UP -> {
Log.d("test", "Touch up event")
}
}
return super.onTouchEvent(event)
}
MotionEvent 객체로 좌표 얻을 수 있음
이벤트가 발생한 뷰의 X 좌표
이벤트가 발생한 뷰의 Y 좌표
화면의 X 좌표
화면의 Y 좌표
override fun onTouchEvent(event: MotionEvent?): Boolean {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
Log.d("test", "Touch down event x: ${event.x}, rawX: ${event.rawX}")
}
}
return super.onTouchEvent(event)
}
x는 터치 이벤트가 발생한 뷰에서의 좌표
rawX는 스크린(화면)에서의 좌표로 서로 의미하는 바가 다름
Do it! 깡쌤의 안드로이드 프로그래밍 with 코틀린 (개정판)