더블탭을 구현해보자

“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”


개요

더블탭을 사용할 일이 생겨서 구현을 하려고 한다.
처음엔 GestureDetectorOnDoubleTabListener를 사용하려고 했으나
사용하지 않는 다른 기능까지 재정의 되어야해서
좀 더 간결하게 사용하고싶은 마음에 직접 만들어보기로 했다.

구현

우선 코드를 살펴보면..

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에 적용해서 실행을 해보면
아주 잘 작동하는 것을 볼 수 있다.

개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.

좋은 웹페이지 즐겨찾기