뷰 이벤트 처리

jihyo·2022년 7월 3일
0

Android

목록 보기
12/17
post-thumbnail

액티비티 화면은 수많은 뷰들로 구성되며 우리가 사용하는 앱 대부분이 뷰를 터치하는 방법으로 앱을 사용한다. 많은 종류의 뷰들이 있기 때문에 각 뷰마다 별도로 제공된다.

뷰 이벤트의 처리 구조

뷰 이벤트는 이벤트 콜백 함수만 선언해서 처리할 수 없다. 이런 점이 터치/키 이벤트의 처리 구조와의 차이점이다.

뷰 이벤트 처리는 3개의 역할로 나뉜다.

  • Event Source : 이벤트가 발생한 객체
  • Event Handler : 이벤트 발생 시 실행할 로직(이벤트 처리 내용)이 구현된 객체
  • Listener : 이벤트 소스와 이벤트 핸들러를 연결해주는 함수

01 이벤트 처리

이벤트 소스에 리스너로 이벤트를 등록, 이벤트가 발생할 때 실행된다. 대부분의 이벤트 핸들러 이름 형식은 On~Listener 인터페이스이다.

뷰 이벤트 처리하는 데는 다양한 방법이 있다. 아래 내용들은 다양한 방법으로 구현한 CheckBox의 체크 여부가 변경될 때의 이벤트 처리 내용이다.

1. 인터페이스를 구현한 object 클래스로 이벤트 핸들러 만들기

03-1 체크박스 예시

  • checkbox : 이벤트가 발생하는 이벤트 소스
  • setOnCheckedChangeListener : 리스너
  • object : OnCheckedChangeListner 인터페이스를 구현한 객체

2. 액티비티 자체에서 인터페이스 구현하기

03-2

3. 이벤트 핸들러를 별도의 클래스로 만들기

03-3

4. 코틀린의 SAM 기법으로 만들기

  • SAM 기법 : Single Abstract Method. 코틀린 코드에서 자바 인터페이스를 간단하게 사용하기 위해 제공하는 기법

03-4

클릭과 롱 클릭 이벤트 처리

뷰가 다양해도 기본적으로 이벤트 처리 구조는 같다. 대표적으로 뷰를 클릭할 때 발생하는 ClickEvent 가 있다.

ClickEventLongClickEvent 는 뷰의 최상위 클래스 View 에 정의된 이베튼로 가장 많이 사용된다.

ClickEvent 핸들러

  • open fun setOnClickListener(l: View.OnClickListener?): Unit
  • open fun setOnLongClickListener(l: View.OnLongClickListener?): Unit

0개의 댓글