가끔 모션 개발을 하다 보면, Action_Move가 들어가야 할 케이스가 있다.
여기서, 손가락을 단순 클릭 했을 때와 움직임과 무빙 후 움직임이 달라야하는 케이스가 있다.
이 때, 얼마나 짧게 클릭하던 무조건 Action_move가 호출된다 봐도 무방하기 때문에, 초기 클릭과 손가락을 뗐을 때의 시간차를 계산하여 이를 단순 클릭인지, 혹은 이동 후 손가락을 뗀 것인지 판단한다.
사용자의 특성과 코드의 특징에 따라 longClickLimitf를 조절하여 클릭으로 판단하는 시간의 길이를 유동적으로 조절해야 한다.
호출 시기는 아래에 주석으로 적어두었다.
var firstClickTime : Long = 0
val longClickLimit = 200
rootView?.setOnTouchListener { v, event ->
when(event.action) {
MotionEvent.ACTION_DOWN -> {
firstClickTime = System.currentTimeMillis()
textViewLog.append("ILog ==> $TAG | action down \n")
return@setOnTouchListener true
}
MotionEvent.ACTION_MOVE -> {
//you add action when finger move
textViewLog.append("ILog ==> $TAG | action move \n")
return@setOnTouchListener true
}
MotionEvent.ACTION_UP -> {
if(System.currentTimeMillis() - firstClickTime < longClickLimit) {
//you add action when finger click
textViewLog.append("ILog ==> $TAG | action up single tap \n")
} else {
//you add action when finger move end
textViewLog.append("ILog ==> $TAG | action up move end \n")
}
return@setOnTouchListener true
}
else -> return@setOnTouchListener true
}
}
그럼 실제 움직임과 그에 따른 매서드 호출을 확인하자.
반응형
'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글
Android] Pending Intent (0) | 2024.03.13 |
---|---|
Android] error : executing external native build for ndkBuild (0) | 2024.01.22 |
Android Studio, Kotlin] WindowManager을 이용하여 휴대폰 최상단에 화면 그리기 (0) | 2023.03.16 |
[Android Studio] Google Firebase 연동하기(2022.02 이후) (0) | 2022.12.09 |
[Android, IOS] 각 OS의 WebView debug 방법 (0) | 2022.10.31 |