Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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
Archives
Today
Total
관리 메뉴

운기의 블로그

ViewPager2 터치이벤트 분리하기 ( 터치 / 스와이프 ) / 뷰페이저2 클릭시 툴바 사라지게 하기 본문

안드로이드

ViewPager2 터치이벤트 분리하기 ( 터치 / 스와이프 ) / 뷰페이저2 클릭시 툴바 사라지게 하기

운띠야 2021. 1. 31. 16:27

 

프로젝트 도중 네이버 웹툰이나 카카오페이지 웹툰과 같이 상단바와 페이지를 표시하는 부분을 숨겼다가 보였다 하는 기능을 구현하고 싶었습니다. 

 

빨간색 테두리 쳐진 부분

하지만 뷰페이저 자체에 setOnTouchListener 를 선언을 해주었지만, 터치이벤트가 실행되지 않았습니다. 

많은 검색 결과 getChildAt(0)을 통해 클릭을 할 수 있다는 걸 알게 되었습니다.

 

getchildeAt은 뷰페이저 내에 어떤 자식 뷰 중 0번째 자식을 사용한다는 이야기입니다.

0번째는 현재 보이는 것 중 맨위에 있는 자식 뷰이고 로그를 찍어본 결과 리사이클러뷰가 나왔습니다.

 

그렇게 상단 툴바와 하단 시크바를 숨겼다가 보여줬다가 할 수 있게 되었습니다. 

 

하지만 터치 이벤트는 스와이프를 작동할 때도 실행되어서 화면을 넘기는 순간에도 터치 이벤트가 인식 되어서 페이지를 넘길때마다 사라졌다 나타나는 이슈가 생겼습니다.

 

-----> 해당 문제를 해결 하기 위한 방법을 터치 이벤트를 재정의 해주는 방식을 고려했고, 그 방법으로는 

 

developer.android.com/training/gestures/detector?hl=ko

 

일반 동작 인식  |  Android 개발자  |  Android Developers

'터치 동작'은 사용자가 터치스크린에 손가락을 한 개 이상 올려놓을 때 발생하며, 애플리케이션은 터치의 패턴을 특정 동작으로 해석합니다. 그에 따른 두 단계로 동작 감지가 이루어집니다.

developer.android.com

GestureDetector를 사용하는 것이 였습니다.

 

총 6개의 터치 이벤트를 재정의 해주고 

 

 

뷰페이저에서 재정의 해준 터치 이벤트를 사용하면 스와이프와 터치가 구분되어서 잘 작동하게 됩니다.

(동영상 첨부)