<개요>
앱 개발 시 클릭리스너를 적용할때 리스너 호출을 빠르게 누르면 중복으로 호출 되는 경우가 발생함
리스너 호출 시 일정시간 이내에 재호출을 하지 못하게 변경하여 처리함
<적용방법>
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 {
// ...
}
}
}
'프로그래밍 > Android' 카테고리의 다른 글
[Android] 반복되는 레이아웃 재사용 (include 태그) (0) | 2022.12.09 |
---|---|
[Kotlin] 코드 실행시간 측정 (0) | 2022.12.06 |
[Android] XML에서 객체를 양쪽에 하나씩 정렬하고 싶을때 (0) | 2022.11.21 |
[Android] 앱 출시후 자동업데이트 (0) | 2022.11.09 |
[Android] 특정 이벤트 발생시 행동(브로드캐스트) (0) | 2022.10.11 |
댓글