Android/Kotlin
안드로이드 중복 클릭 막기
easy-1
2021. 10. 27. 12:12
<개요>
앱 개발 시 클릭리스너를 적용할때 리스너 호출을 빠르게 누르면 중복으로 호출 되는 경우가 발생함
리스너 호출 시 일정시간 이내에 재호출을 하지 못하게 변경하여 처리함
<적용방법>
1. OnSingleClickListener 생성하여 인터벌 발생 시킴
class OnSingleClickListener(
private var interval: Int = 600,
private var onSingleClick: (View) -> Unit
) : View.OnClickListener {
private var lastClickTime: Long = 0
override fun onClick(v: View) {
val elapsedRealtime = SystemClock.elapsedRealtime()
if ((elapsedRealtime - lastClickTime) < interval) {
return
}
lastClickTime = elapsedRealtime
onSingleClick(v)
}
}
2. Extensions.kt 생성하여 OnSingleClickListener 클래스를 적용
// 클릭리스너
fun View.setOnSingleClickListener(onSingleClick: (View) -> Unit) {
val oneClick = OnSingleClickListener {
onSingleClick(it)
}
setOnClickListener(oneClick)
}
3. 사용하고자 하는 액티비티에서 리스너 호출
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val viewModel by viewModels<MainViewModel>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
// 클릭리스너 호출
binding.btn.setOnSingleClickListener {
// ...
}
}
}