일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 대학톡
- 특가촌
- fragment
- 작성
- 올인원타이머
- Android
- 카드내역 공유
- android clean architecture
- Koin
- 특가알람
- andorid
- 특가게시판
- nvidia-docker
- kotlin
- java.lang.OutOfMemoryError: Java heap space
- RxJava
- moveToState
- 카드 내역 공유 앱
- recyclerview
- List
- 뷰 상태복구
- 안드로이드
- todofication
- onViewCreated
- 타이머앱
- Quickly
- 안드로이드 클린 아키텍쳐
- 뷰 상태 저장
- RX
- compileKotlin FAILED
- Today
- Total
seoft
부모 뷰의 onTouchListener가 발생하지 않을 때 해결법 본문
문제정의
quickly앱(https://github.com/seoft/quickly)개발을 하기 이전에 우선 필요 뷰들을 라이브러리화 시켜 적용할 계획이었고,
DragAndDropBetweenMultipleGrid(in https://github.com/seoft/seoft-android-libraries)라는 라이브러리 프로젝트 진행하였는데 도중에 의도치 않은 버그가 발생하였다.
버그 리포팅을 위한 요구사항은 중앙의 RecyclerView 내 아이템을 롱 클릭했을 때 플로팅 뷰 하나가 생겨나고 손가락을 따라다니며 스크린에 전체에 왔다 갔다 할 수 있게 구현하는 것
구현상황 :
1. RecyclerView ViewHolder에 setOnClickListener, setOnLongClickListener등록, 클릭 콜백 발생 시 high-order-function으로 Activity에 넘김
2. RecyclerView에 setOnTouchListener등록 롱 클릭 이벤트 발생 후 플로팅 뷰의 좌표값을 계산해서 손가락을 따라다니게 함
예상 : 롱 클릭 이벤트 발생과 동시에 온 터치 이벤트 발생
버그 : 롱 클릭 이벤트 발생 후 한번 손가락을 움직여 줘야 온터치 이벤트 발생
왜 그럴까?
참조 : https://moka.land/android/touch-event-transfer/
터치 이벤트 전달이 RecyclerView의 setOnLongClickListener에 묶여있다가 롱 클릭 이벤트가 발생된 이후에 전달이 풀리게 되어RecyclerView의 setOnTouchListener에서 터치 이벤트 전달받게 된 것
해결법:
setOnLongClickListener로 터치 이벤트를 전달하기 전에 묶여있기 전에 RecyclerView의 onTouchListener가 발생하여 setOnLongClickListener가 발생한 직후의 로직을 진행시켜야 한다.
그러기 위해서 적용시킬 View의 addOnItemTouchListener함수로 View의 OnItemTouchListener를 재구현하여 onInterceptTouchEvent함수에서 처리할 수 있게 한 뒤 넣어준다.
참조 : https://iw90.tistory.com/238
'android' 카테고리의 다른 글
kotlin list 조합하여 immutable list 만들기 (0) | 2020.01.17 |
---|---|
RecyclerView item이 아닌 RecyclerView 자체에 onClickListener 붙이기 (0) | 2020.01.12 |
Android Room 종합예제(기본연동, ForeignKey, enum, list, Rx연동, unit test) (0) | 2019.11.30 |
rxjava subscribeOn observeOn 요약 (0) | 2019.11.30 |
ShortCut 관련 기능 실행시 - Caller can't access shortcut information 에러 (0) | 2019.09.27 |