티스토리 뷰
Android/RecyclerView
[ RecyclerView #3 ] GestureDetector ( RecyclerView or ScrollView )
녹색꼬맹이 2022. 12. 20. 15:13반응형
SMALL
스크롤 되는 layout 에서 터치 이벤트를 내가 원하는 동작으로 캐치 하기 위한 방법이라고 생각한다.
https://developer.android.com/training/gestures/detector?hl=ko
일반 동작 인식 | Android 개발자 | Android Developers
일반 동작 인식 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. '터치 동작'은 사용자가 터치스크린에 손가락을 한 개 이상 올려놓을 때 발생하며, 애플리케
developer.android.com
RecyclerView
open class GestureRecyclerView @JvmOverloads constructor (
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
): RecyclerView(context, attrs, defStyleAttr) {
var detector: GestureDetector? = null
override fun onTouchEvent(ev: MotionEvent): Boolean {
return if (detector?.onTouchEvent(ev) == true) true else super.onTouchEvent(ev)
}
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
return if (detector?.onTouchEvent(ev) == true) true else super.onInterceptTouchEvent(ev)
}
}
해당 class 를 단독 사용하거나 여러 곳에서 나눠 써야 할 수 있기 때문에 open class 로 되어 있는데 단순 class 로 선언해도 상관 없다.
ScrollView
class GestureScrollView@JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : NestedScrollView(context, attrs, defStyleAttr) {
private var detector: GestureDetector? = null
fun setGestureDetector(detector: GestureDetector) {
this.detector = detector
}
override fun onTouchEvent(ev: MotionEvent): Boolean {
return if (detector?.onTouchEvent(ev) == true) true else super.onTouchEvent(ev)
}
}
반응형
여기서 사용하고자 하는 class 에서 GestureDetector 를 선언해 사용 하는 함수형으로 만들어 전달 하면 된다.
private val gestureDetector: GestureDetector by lazy {
GestureDetector(requireContext(), object : GestureDetector.OnGestureListener {
override fun onDown(p0: MotionEvent?): Boolean {
return false
}
override fun onShowPress(p0: MotionEvent?) {}
override fun onSingleTapUp(p0: MotionEvent?): Boolean {
return false
}
override fun onScroll(
p0: MotionEvent?,
p1: MotionEvent?,
p2: Float,
p3: Float
): Boolean {
return false
}
override fun onLongPress(p0: MotionEvent?) {}
override fun onFling(
p0: MotionEvent?,
p1: MotionEvent?,
p2: Float,
p3: Float
): Boolean = false
})
}
return 값 처리
onTouch > onClick > onLongClick
true : 전달 하지 않음.
false : 다음 이벤트로 전달
반응형
LIST
'Android > RecyclerView' 카테고리의 다른 글
[ RecyclerView #1 ] ItemMoveToSwipe ( ItemTouchHelper ) (0) | 2018.12.20 |
---|
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 쏘렌토 하이브리드 시그니처
- 역시 키크론이네
- Fragment data
- 폰과 워치 페어링
- widget glide
- Android Wear Os
- widget 만들기
- Android
- 프래그먼트 데이터 저장
- Foldable Event
- 폴더블 상태 유지
- widget onupdate
- wear os
- 랜덤컬러
- 폴더블 이벤트 받기
- Dot indicator
- RandomColor
- widget 이미지 로딩
- 안드로이드 플립 대응
- 맥 전용
- aos img url bitmap
- android widget 만들기
- widget onreceive
- 풀배열 키보드
- flutter web
- 갤럭시 워치
- 웨어러블
- 안드로이드 폴드 대응
- 쏘렌토 하이브리드
- 가중치랜덤
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함