定义一个通用的抽象类:
public abstract class MultiClickListener : View.OnClickListener {private var count = 5 // 默认连续点击5次private var hits: LongArray = LongArray(count) //记录点击次数private var duration: Long = 2000L // 默认有效时间constructor()constructor(count: Int, duration: Long) {unt = countthis.duration = duration}override fun onClick(v: View?) {// 将 hits 数组内所有元素左移一个位置System.arraycopy(hits, 1, hits, 0, hits.size - 1)// 获取当前系统已经启动的时间hits[hits.size - 1] = SystemClock.uptimeMillis()if (hits[0] >= (SystemClock.uptimeMillis() - duration)) {// 在有效时间内已经连续点击了 count 次,算一次有效点击onClickValid(v)Log.i("MainActivity", "valid click")// 将所有时间重置hits.forEachIndexed { index, _ ->hits[index] = 0}} else {Log.i("MainActivity", "not valid click")}}public abstract fun onClickValid(v: View?)}
使用:
findViewById<View>(st_continue_click).setOnClickListener(object : MultiClickListener() {override fun onClickValid(v: View?) {Toast.makeText(baseContext, "clicked me", Toast.LENGTH_SHORT).show()}})
本文发布于:2024-01-31 04:28:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170664648325473.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |