액티비티 화면은 수많은 뷰들로 구성되며 우리가 사용하는 앱 대부분이 뷰를 터치하는 방법으로 앱을 사용한다. 많은 종류의 뷰들이 있기 때문에 각 뷰마다 별도로 제공된다.
뷰 이벤트는 이벤트 콜백 함수만 선언해서 처리할 수 없다. 이런 점이 터치/키 이벤트의 처리 구조와의 차이점이다.
뷰 이벤트 처리는 3개의 역할로 나뉜다.
이벤트 소스에 리스너로 이벤트를 등록, 이벤트가 발생할 때 실행된다. 대부분의 이벤트 핸들러 이름 형식은 On~Listener
인터페이스이다.
뷰 이벤트 처리하는 데는 다양한 방법이 있다. 아래 내용들은 다양한 방법으로 구현한 CheckBox
의 체크 여부가 변경될 때의 이벤트 처리 내용이다.
checkbox
: 이벤트가 발생하는 이벤트 소스setOnCheckedChangeListener
: 리스너object
: OnCheckedChangeListner
인터페이스를 구현한 객체뷰가 다양해도 기본적으로 이벤트 처리 구조는 같다. 대표적으로 뷰를 클릭할 때 발생하는 ClickEvent
가 있다.
ClickEvent
와 LongClickEvent
는 뷰의 최상위 클래스 View
에 정의된 이베튼로 가장 많이 사용된다.
ClickEvent
핸들러
open fun setOnClickListener(l: View.OnClickListener?): Unit
open fun setOnLongClickListener(l: View.OnLongClickListener?): Unit