티스토리 뷰
반응형
뷰의 터치 이벤트 처리방법 3가지
- 액티비티에서 onTouchEvent 메서드 재정의
- 이벤트 처리하는 뷰 서브클래스에서 onTouchEvent 메서드 재정의
- 처리하고자 하는 뷰에 View.OnTouchListener 리스너 인터페이스를 등록
* 이벤트 처리의 흐름
- 액티비티에서의 이벤트 처리
액티비티 >> onTouchEvent 메서드를 재정의 >> 모든 뷰의 터치이벤트를 받을 수 있음
- 뷰에서 이벤트 처리
onTouchEvent 메서드를 재정의 >> 상속, 서브클래스 = 번거로움
or
OnTouchListener 인터페이스를 등록 >> 인터페이스를 구현한 메서드에서 터치이벤트를 받음, 상속 x
>>> 해당 뷰의 이벤트만 처리
- 2가지 다 구현되어 있다면?
OnTouchListener의 메서드(onTouch) >> onTouchEvent 순서로 호출
onTouch 메서드가 true를 리턴? >> onTouchEvent는 이벤트를 받지 못함
Activity(dispatchTouchEvent) : 하위 dispatchTouchEvent 호출
ViewGroup(dispatchTouchEvent) : onInterceptTouchEvent 호출
ViewGroup(onInterceptTouchEvent) : 하위 dispatchTouchEvent 호출
View(dispatchTouchEvent) : 자신의 이벤트 핸들러 메서드 호출
View(onTouch) : 이벤트 처리 & 처리여부 리턴
View(onTouchEvent) : 이벤트 처리 & 처리여부 리턴
View(dispatchTouchEvent) : 자신의 이벤트 핸들러 메서드의 결과값을 리턴
ViewGroup(onTouch) : 이벤트 처리 & 처리여부 리턴
ViewGroup(onTouchEvent) : 이벤트 처리 & 처리여부 리턴
ViewGroup(dispatchTouchEvent) : 자신 or 하위 레이어의 결과값을 리턴
Activity(onTouchEvent) : 이벤트 처리 & 처리여부 리턴
Activity(dispatchTouchEvent) : 자신 or 하위 레이어의 결과값을 리턴
- Aictivity/ViewGroup/View는 모두 dispatchTouchEvent, onTouchEvent 메서드를 가짐
- ViewGroup에는 추가적으로 onInterceptTouchEvent 메서드를 가짐
- 이벤트가 발생하면 각 레이어의 dispatchTouchEvent가 가장 먼저 호출 >>
dispatchTouchEvent는 하위 레이어의 dispatchTouchEvent를 호출
하위 레이어가 터치 이벤트를 처리했는지 결과를 받아서 처리하지 않은 경우 >>
자기 자신의 이벤트 처리 메서드(onTouch, onTouchEvent) 메서드로 이벤트를 보냄 >>
이벤트 처리 여부를 상위 dispatchTouchEvent에 리턴
- onInterceptTouchEvent는 ViewGroup의 dispatchTouchEvent의 로직을 대신 담당하여, 자신에게 속한 하위뷰에게 이벤트를 전달할지 결정한다.
- 모든 메서드는 리턴값이 boolean형인데 true일 경우 이벤트를 처리했음을 의미하고, false일 경우 이벤트가 처리되지 않았음을 의미한다.
* onInterceptTouchEvent
- true : 이벤트를 가져옴
- false : 하위 View로 이벤트를 전달
* 참조
http://dktfrmaster.blogspot.com/2016/09/blog-post_26.html
https://iw90.tistory.com/238
반응형
'Android > Java' 카테고리의 다른 글
[Android] DataBinding 사용법 / 개요 (0) | 2019.04.08 |
---|
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 버전카타로그
- rotation
- dart
- Kotlin
- gem update
- 안드로이드
- 격파르타 후기
- 음성재생
- 연산자
- NoAnimation
- 함수
- 코틀린
- IOS
- FLUTTER
- 스위프트
- Xcode
- Swift
- sqld 자격증 합격
- 아이폰
- 자바
- toml
- 변수
- Java
- ~=
- 아이폰앱개발
- rotate
- 격파르타 합격후기
- .toml
- 격파르타 장점
- Android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함