순식간에 버튼을 여러번 클릭하지 못하게 방지하자! (Debounce)
Search
🏏

순식간에 버튼을 여러번 클릭하지 못하게 방지하자! (Debounce)

생성일
2021/09/06 08:06
태그
간혹 사용자의 손떨림이나 급한 성격(?)으로 클릭 이벤트를 여러번 보내 원치 않는 결과를 줄 때가 있다.
간단한 확장함수로 편하게 적용 가능하다.
class DebounceOnClickListener( private val interval: Long, private val listenerBlock: (View) -> Unit, ) : View.OnClickListener { private var lastClickTime = 0L override fun onClick(v: View) { if (!isNetworkAvailable(v.context)) { txt("isNetworkAvailable setOnClickListener(###)") v.context.startActivity(Intent(v.context, NetworkErrorActivity::class.java)) } val time = System.currentTimeMillis() if (time - lastClickTime >= interval) { lastClickTime = time listenerBlock(v) } } }
Kotlin
복사
fun View.setOnClickListener(debounceInterval: Long, listenerBlock: (View) -> Unit) = setOnClickListener(DebounceOnClickListener(debounceInterval, listenerBlock))
Kotlin
복사
위와 같이 만들어두면 아래 코드처럼 간단하게 가능하다.
binding.downloadImageView.setOnClickListener(Constants.CLICK_INTERVAL){ //Constants.CLICK_INTERVAL = 600L, 0.6초 }
Kotlin
복사