[Android] 08. 사용자 이벤트 처리하기

 사용자 이벤트 처리

사용자 이벤트 처리

목차

  • 08-1. 터치와 키 이벤트
  • 08-2. 뷰 이벤트
  • [실습] 시계 앱의 스톱워치 기능 만들기



08-1. 터치와 키 이벤트

터치 이벤트

터치 이벤트

  • 터치 이벤트의 콜백 함수인 onTouchEvent()를 선언한다.
  • 매개변수는 MotionEvent 객체이며, 이 객체에 터치의 종류와 발생 지점(좌푯값)이 담긴다.

터치 이벤트

  • 터치 이벤트의 종류
    • ACTION_DOWN: 화면을 손가락으로 누른 순간의 이벤트
    • ACTION_UP: 화면에서 손가락을 떼는 순간의 이벤트
    • ACTION_MOVE: 화면을 손가락으로 누른 채로 이동하는 순간의 이벤트

터치 이벤트 발생 좌표 얻기

터치 이벤트 발생 좌표 얻기

  • 터치 이벤트 발생 좌표 얻기
  • onTouchEvent() 함수의 매개변수인 MotionEvent 객체로 획득
    • x: 이벤트가 발생한 뷰의 X좌표
    • y: 이벤트가 발생한 뷰의 Y좌표
    • rawX: 화면의 X좌표
    • rawY: 화면의 Y좌표


키 이벤트

키 이벤트

  • 사용자가 폰의 키를 누르는 순간에 발생한다.
  • 콜백 함수
    • onKeyDown: 키를 누른 순간의 이벤트
    • onKeyUp: 키를 떼는 순간의 이벤트
    • onKeyLongPress: 키를 오래 누르는 순간의 이벤트

첫 번째 매개변수는 키의 코드이며 이 값으로 사용자가 어떤 키를 눌렀는지 식별

  • 첫 번째 매개변수는 키의 코드이며 이 값으로 사용자가 어떤 키를 눌렀는지 식별

뒤로가기 버튼과 볼륨 조절 버튼의 이벤트 처리

뒤로가기 버튼과 볼륨 조절 버튼의 이벤트 처리

  • 키 이벤트가 발생하는 키는 폰에서 제공하는 소프트 키보드의 키를 의미하지 않는다.
  • 안드로이드 시스템 버튼도 키로 취급하므로 이 버튼의 이벤트를 처리한다.
  • 뒤로가기 버튼 이벤트에는 앞에서 살펴본 onKeyDown()이나 onKeyUp()함수를 이용할 수도 있지만 onBackPressed()함수를 이용할 수도 있습니다.
  • 제스처 내비게이션을 사용하고 있다면 사용자 제스처로 뒤로 가기를 하면 <뒤로가기>버튼을 누른 것과 같다. 그러므로 사용자 제스처 뒤로가기도 onKeyDown()함수를 선언해 이벤트 처리가 가능하다.

뒤로가기 버튼 이벤트 처리

  • 뒤로가기 버튼 이벤트에는 onBackPressed() 함수를 이용할 수도 있다.

뒤로가기 버튼 이벤트 처리

  • API Level 33에서 뒤로가기 버튼 이벤트 처리 함수인 onBackPressed()함수는 deprecated 되었다.
  • androidx.activity.OnBackPressedCallBack()함수 이용을 권장한다.



08-2. 뷰 이벤트

뷰 이벤트의 처리 구조

뷰 이벤트의 처리 구조

  • 뷰 이벤트 처리는 이벤트 소스와 이벤트 핸들러로 역할이 나뉘며 이 둘을 리스너로 연결해야 이벤트를 처리할 수 있다.
    • 이벤트 소스: 이벤트가 발생한 객체
    • 이벤트 핸들러: 이벤트 발생 시 실행할 로직이 구현된 객체
    • 리스너: 이벤트 소스와 이벤트 핸들러를 연결해 주는 함수

체크박스 이벤트 처리
체크박스 이벤트 처리

  • 체크박스 이벤트 처리

액티비티에서 인터패이스를 구현한 예

  • 액티비티에서 인터패이스를 구현한 예

이벤트 핸들러를 별도의 클래스로 만든 예

  • 이벤트 핸들러를 별도의 클래스로 만든 예

SAM 기법으로 구현한 예

  • SAM 기법으로 구현한 예


클릭과 롱클릭 이벤트 처리

클릭과 롱클릭 이벤트 처리

  • ClickEvent, LongClickEvent는 뷰의 최상위 클래스인 View에 정의된 이벤트
    • open fun setOnClickListener(l: View.OnClickListener?): Unit
    • open fun setOnLongClickListener(l: View.OnLongClickListener?): Unit



[실습] 시계 앱의 스톱워치 기능 만들기

| 1단계: 새 모듈 생성하기

  • Ch8_Event라는 이름으로 새로운 모듈을 만듭니다.


| 2단계: 그래들 설정하기

그래들 설정하기


| 3단계: 둥근 버튼 만들기

둥근 버튼 만들기

  • [res] → [drawable] 디렉터리를 마우스 오른쪽 버튼으로 눌러 [New] → [Drawable Resource File] 메뉴를 선택
  • round_button.xml 파일


| 4단계: 앱 화면 구성하기

  • activity_main.xml 파일


| 5단계: 메인 액티비티 작성하기

  • MainActivity.kt 파일


| 6단계: 앱 실행하기

앱 실행하기



[07 뷰를 배치하는 레이아웃] 👈 | 👉 [09 리소스 활용하기]


댓글

이 블로그의 인기 게시물

[컴퓨터] Office 무료 설치

[컴퓨터] iptime 관리자계정 찾기 및 설정

[컴퓨터] 윈도우11 디펜더 끄기