728x90
반응형
슬라이딩 다이얼로그 개발을 하다 기억에서 잊혀졌던 터치 흐름도를 정리 합니다.
처음에 단순히 애니메이션을 이용해 뷰를 이동하는 간단한 작업이라고 생각했으나 뷰안에 컨트롤이 올라가니 생각되로 움직이지 않았습니다. 컨트롤이 이벤트를 먹고 있구나... 그럼 어떻게 해야하지? 순간 생각이 나지 않았습니다.
터치 이벤트를 오랜만에 검색해 봤습니다.
아... dispatch... onIntercept... OnTouch... 예전(7~8년)에는 컨트롤들을 직접 개발해서 사용하는일이 많았으나 요즘은 대부분 오픈소스를 활용해서 까먹고 있었네요 ㅜ
검색하던 중 정리가 잘된 블로그와 예제를 발견했습니다.
- 블로그
- 예제
이벤트 순서만 보면
- dispatchTouchEvent
- onInterceptTouchEvent
- onTouchEvent
자식이 있다면
- parent dispatchTouchEvent
- parent onInterceptTouchEvent
- child dispatchTouchEvent
- child onInterceptTouchEvent
- child onTouchEvent
- parent onTouchEvent
슬라이딩 뷰의 동작과 뷰안에 컨트롤들이 정상적으로 동작하게 하려면 ViewGroup중 하나를 상속받아 사용해야하네요
dispatchTouchEvent 는 실제 슬라이딩에 필요한 작업을 처리하고
onInterceptTouchEvent 에는 조건에 따라 자식으로 이벤트를 넘겨줄지 말지를 결정합니다
주의 : onTouchEvent 실제 슬라이딩에 필요한 작업을 처리해야 할것 같지만 컨트롤러에서 이벤트가 막히면 onTouchEvent가 호출되지 않을 수 있습니다.
잘동작하네요 ^^
반응형
'Development > Android' 카테고리의 다른 글
[android] retrofit2 적용하기 (0) | 2022.06.22 |
---|---|
[android] 사용하지 않는 리소스(Unused resources) 삭제 (0) | 2022.05.11 |
[android] 안드로이드 필요한곳만 라운드처리하기 (0) | 2022.04.26 |
[android] ViewPager2 setOnTouchListener (0) | 2022.04.26 |
[andrdoid] Failure [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2] (0) | 2022.04.20 |
댓글