Chap7. 인터페이스 기초04- 이벤트 (Event)
: 프로그램의 실행 흐름이 사용자 동작과 센서 입출력 등 외부 이벤트에 따라 결정되는 프로그래밍 방식.
; GUI프로그램에서 채택하였으며 대부분의 프로그래밍 방식으로 쓰임.
; 이벤트가 발생하면 앱의 Event Handler가 이를 전달 받아 이벤트를 처리함. ex.onClick()
= Event Handler 구현 방식
boolean onTouchEvent (MotionEvernt event)
boolean onKeyDown (int keyCode, keyEvent event)
boolean onKeyUp (int keyCode, KeyEvent event)
boolean onTrackballEvent (MotionEvent event)
-- 개발자가 상속을 구현한 Custom View를 작성하였을 때만 사용 가능하다.
-- 이벤트에 대한 메소드가 전부 정의되어 있지 않다.
-- 앞에 on이 붙은 메소드는 대부분 콜백이다.
(Ctrl+O - Select Method to Override/Implement 에서 찾아볼 수 있다.)
ex. (링크)
: 이벤트 처리 Listener를 구현하여 이벤트 처리가 필요한 View에 등록하는 방법으로 가장 기본적인 UI 이벤트 처리 방법이다.
//인터페이스 : 구현 메소드
onTouchListener : boolean onTouch (View v , MotionEvent event)
onKeyListener : boolean onKey (View v, int keyCode, KeyEvent event)
onClickListener : void onClick (View v)
onLongClickListener : boolean onLongClick (View v)
Listener Interface 구현 유형
유형1. 별도의 리스너 인터페이스 구현 클래스 작성
유형2. Activity가 리스너 인터페이스 직접 구현
유형3. 뷰를 직접 작성할 경우 뷰에 리스너 인터페이스 구현
유형4. 익명 내부 클래스로 구현
; 별도의 클래스 없이 인터페이스에서 직접 객체 생성
유형5. 익명 내부 클래스의 임시 객체로 구현
; 객체 이름 없이 인터페이스 구현 및 등록
ex. 리스너 인터페이스를 구현하여 이벤트 처리 (Listener Interface)
Listener Interface 사용 시 명칭
: 명칭을 구성하는 규칙이 있어 이름을 통해 각 요소를 쉽게 유추 가능.
ex.
처리하려는 UI 이벤트 명 : Click
구현할 인터페이스 명칭 : OnClickListener (대문자로 시작)
인터페이스 내부 구현 메소드 명 : onClick (소문자로 시작)
뷰의 인터페이스 등록 메소드 명칭 : View.setOnClickListener
: Click / Long Click과 같이 자주 사용하는 기본 이벤트 처리
; XML의 View 속성에 처리 메소드 명을 등록한 후 구현
ex.
1. Click 이벤트 처리가 필요한 위젯 선택
2. design창의 Properties에서 onClick란에 메소드명 입력
3. 해당 위젯이 속한 Activity에 멤버 메소드로 추가
ex. (링크)
하나의 이벤트에 대하여 여러 이벤트 리스너를 작성할 경우의 우선 순위
경우1. 구현한 이벤트 리스너가 있을 경우 우선 수행
경우2. 뷰 자체의 콜백 메소드를 구현하였을 경우 우선 수행 (커스텀 뷰)
경우3. 액티비티에 콜백 메소드를 구현하였을 경우 우선 수행
+) 이벤트 리스너의 반환값 설정
true 반환 : 추가적인 이벤트 처리 진행을 생략
false 반환 : 이벤트 처리를 다음 순위의 리스너에게 이벤트 진행
문제점 : 이벤트 핸들러는 이벤트 발생 시점에 실행되어 외부의 지역 변수 사용 시 접근범위 문제가 발생할 수 있다.
해결책1 : 멤버 변수로 선언한다.
해결책2 : 상수로 선언한다.
터치 입력
: 버튼 클릭 이외에 뷰를 터치하는 이벤트 처리
= ACTION_DOWN(화면터치), ACTION_MOVE(터치한 상태로 움직임), ACTION_UP(손가락을 뗌)
ex. (링크)
키보드 입력
: 모바일 장비의 가상 키보드 입력 처리
; KEYCODE 값으로 입력할 키의 종류 구별
= ACTION_DOWN, ACTION_UP, ACTION_MULTIPLE
롱클릭 (롱탭)
: 뷰를 일정 시간 동안 클릭하고 있을 때 발생하는 이벤트
; 클릭과 같이 쓰는 경우 false로 처리할 것