IT/Android
[Android] View에서 onTouchEvent 이벤트 ACTION_DOWN 만 나오는 문제
토마토조아
2020. 5. 4. 23:53
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