728x90
안드로이드 개발을 하다 보면 터치 이벤트를 상당히 잘 설계하고 사용해야 한다.
보통 View에서 내가 원하는 위젯을 상속받고 터치 이벤트만 커스텀하여 사용하는 경우도 종종 발생하는데,
그 중에서도 MotionEvent를 다루는 경우가 종종 발생한다.
그런데 막상 MotionEvent로 ACTION_UP / ACTION_DOWN / ACTION_MOVE 를 조절해서 사용해야 하는데,
아무리 이것 저것 건드려봐도 ACTION_DOWN만 넘어오는 경우가 발생한다.
이럴 경우 가장 쉽게 해볼 수 있는 방법은 해당 위젯의 clickable 속성을 true 해주는 경우다.
나의 경우는 ViewPager를 커스텀하여 개발을 진행하는데, 아무리 해도 onTouchEvent에서 ACTION_DOWN만 넘어오길래 한참을 구글링하다가 찾아낸 방법이었다.
구글링 중간에 MotionEventCompat의 ACTION_MASK를 이용해서 ACTION을 받으라는 방법도 있었으나, 나에게는 필요없는 문제였다.
<ImageView
android:id="@+id/portrait_iv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_dashboard_black_24dp"
android:clickable="true" />
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
var startY = 0f
var currentY = 0f
when(ev.action) {
MotionEvent.ACTION_DOWN -> {
startY = ev.y
}
MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_UP -> {
}
MotionEvent.ACTION_MOVE -> {
currentY = ev.y
Log.d("ldhcjs", "ACTION_MOVE HORIZONTAL $currentY")
Log.d("ldhcjs", "ACTION_MOVE HORIZONTAL ${startY - currentY}")
if(abs(startY - currentY) > 0f) {
return true
}
}
}
}
return super.onInterceptTouchEvent(ev)
}
728x90
'IT > Android' 카테고리의 다른 글
Odin 오류 대처 방법 (1) | 2020.09.18 |
---|---|
안드로이드 터치 이벤트 처리 과정(Android touch event) (0) | 2020.05.10 |
Custom view [Classname] overrides onTouchEvent but not performClick 오류 처리 (0) | 2020.04.27 |
[Google] Cloud Vision API 가격 정보 (0) | 2019.11.18 |
[Kotlin] 메서드 인터페이스 객체 생성하기(Method Interface object) (0) | 2019.09.02 |