“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”
더블탭을 사용할 일이 생겨서 구현을 하려고 한다.
처음엔 GestureDetector
의 OnDoubleTabListener
를 사용하려고 했으나
사용하지 않는 다른 기능까지 재정의 되어야해서
좀 더 간결하게 사용하고싶은 마음에 직접 만들어보기로 했다.
우선 코드를 살펴보면..
abstract class OnTabListener : View.OnClickListener {
// 더블탭 시간 간격
private val INTERVAL: Long = 500
// 마지막 탭 시간
private var lastTabTime: Long = 0
abstract fun onDoubleTab(v: View?)
override fun onClick(v: View?) {
// 탭한 시간
val currentTabTime = SystemClock.uptimeMillis()
// 이전에 탭한 시간과 현재시간 차이 계산
val intervalTab = currentTabTime - lastTabTime
// 마지막 탭 시간 업데이트
lastTabTime = currentTabTime
if(intervalTab <= INTERVAL) {
onDoubleTab(v)
}
}
}
현재 탭한 시간과 이전에 탭했던 시간을 계산해서
정해진 시간 간격 안에 들어오면 콜백을 호출하는 방식이다.
binding.btnTab.setOnClickListener(object : OnTabListener() {
override fun onDoubleTab(v: View?) {
Toast.makeText(v?.context, "Double Tab", Toast.LENGTH_SHORT).show()
}
})
사용할 View에 적용해서 실행을 해보면
아주 잘 작동하는 것을 볼 수 있다.
개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.