더블탭은 GestureDetector의 onDoubleTap()으로 쉽게 구현할 수 있다.
트리플탭은 따로 제공되는 함수가 없는 듯하여 직접 구현했다.
private var touchCount: Int = 0 //터치 누적 횟수
private var DELAY: Long = 400 //handler delay
binding.root.setOnClickListener {
touchCount++ //화면 터치 시, 터치 횟수 증가
Log.d("LOGGING", "$touchCount")
var handler = Handler(Looper.getMainLooper())
handler.postDelayed({
// delay 초가 지나고 난 후
kotlin.run {
if (touchCount == 1) {// 터치 이벤트가 1번 이면
Log.d("LOGGING", "touchCount 1")
}
//delay초 이후에 터치이벤트가 3번 이상이 아니면 다 들어옴 > 터치이벤트 횟수 초기화
//if (touchevent==1) 안에서 터치이벤트를 리셋 시키면, delay초 이후에 터치이벤트가 2번일때 touchevent를 0 으로 초기화 시켜주는 부분이 없다.
//그래서 2번 터치 후 시간이 지나고 또 한번 터치하면 사용자는 touchevent ==1 일때의 기능을 원하겠지만, 실제로는 touchevnet ==3 일때가 작동된다.
//그래서 if (touchevent==1) 구문 밖에 적어서 touchevent가 1,2일 때 모두 초기화 해줘야함.
touchCount = 0
}
}, DELAY)
if (touchCount == 3) { //delay 초가 지나기 전에 touch횟수가 3번이면
touchCount = 0
Log.d("LOGGING", "touchCount 3")
}
}