운기의 블로그
ViewPager2 터치이벤트 분리하기 ( 터치 / 스와이프 ) / 뷰페이저2 클릭시 툴바 사라지게 하기 본문
프로젝트 도중 네이버 웹툰이나 카카오페이지 웹툰과 같이 상단바와 페이지를 표시하는 부분을 숨겼다가 보였다 하는 기능을 구현하고 싶었습니다.
하지만 뷰페이저 자체에 setOnTouchListener 를 선언을 해주었지만, 터치이벤트가 실행되지 않았습니다.
많은 검색 결과 getChildAt(0)을 통해 클릭을 할 수 있다는 걸 알게 되었습니다.
getchildeAt은 뷰페이저 내에 어떤 자식 뷰 중 0번째 자식을 사용한다는 이야기입니다.
0번째는 현재 보이는 것 중 맨위에 있는 자식 뷰이고 로그를 찍어본 결과 리사이클러뷰가 나왔습니다.
그렇게 상단 툴바와 하단 시크바를 숨겼다가 보여줬다가 할 수 있게 되었습니다.
하지만 터치 이벤트는 스와이프를 작동할 때도 실행되어서 화면을 넘기는 순간에도 터치 이벤트가 인식 되어서 페이지를 넘길때마다 사라졌다 나타나는 이슈가 생겼습니다.
-----> 해당 문제를 해결 하기 위한 방법을 터치 이벤트를 재정의 해주는 방식을 고려했고, 그 방법으로는
developer.android.com/training/gestures/detector?hl=ko
GestureDetector를 사용하는 것이 였습니다.
총 6개의 터치 이벤트를 재정의 해주고
뷰페이저에서 재정의 해준 터치 이벤트를 사용하면 스와이프와 터치가 구분되어서 잘 작동하게 됩니다.
(동영상 첨부)
'안드로이드' 카테고리의 다른 글
안드로이드 12 - android:exported = "true" (0) | 2022.03.20 |
---|---|
Singleton pattern 에 대해서 (0) | 2021.04.04 |
#3. 안드로이드 개발자 가이드 핵심주제, 사용자 인터페이스 (0) | 2020.08.02 |
#2. 안드로이드 개발자 가이드 핵심주제, 액티비티 (0) | 2020.07.04 |
#1. 안드로이드 개발자 가이드 앱 기초 (0) | 2020.06.17 |