[Android Studio] 8장 - 사용자 이벤트 처리하기 [터치 이벤트]

이상협·2022년 9월 6일
0

안드로이드스튜디오

목록 보기
26/43

터치 이벤트

앱은 사용자의 터치를 인식하고 화면을 터치했는지,
스와이프 했는지에 따라 동작하도록 구현됨

onTouchEvent()

터치 이벤트의 콜백 함수
앱의 화면에서 발생하는 사용자의 터치 이벤트 처리

※콜백 함수 - 어떤 이벤트가 발생하거나 시점에 도달했을 때 
시스템에서 자동으로 호출하는 함수
class MainActivity : AppCompatActivity() {
    ...
    override fun onTouchEvent(event: MotionEvent?): Boolean {
        return super.onTouchEvent(event)
    }
}

함수의 매개변수는 MotionEvent 객체이며,
이 객체에 터치의 종류와 발생 지점 값이 들어있음

터치 이벤트의 종류

  • ACTION_DOWN
화면을 손가락으로 누른 순간의 이벤트
  • ACTION_UP
화면에서 손가락을 떼는 순간의 이벤트
  • ACTION_MOVE
화면을 손가락으로 누른 채로 이동하는 순간의 이벤트
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
이벤트가 발생한 뷰의 X 좌표
  • Y
이벤트가 발생한 뷰의 Y 좌표
  • rawX
화면의 X 좌표
  • rawY
화면의 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 코틀린 (개정판)

0개의 댓글