admin管理员组

文章数量:1030419

Android 多点击监听器

代码语言:javascript代码运行次数:0运行复制
abstract class MultiClickListener(var count: Int = 5, var duration: Long = 2000) : View.OnClickListener {

    //记录点击次数
    private var hits: LongArray = LongArray(count)

    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)
            // 将所有时间重置
            hits.forEachIndexed { index, _ ->
                hits[index] = 0
            }
        }
    }

    //当连续多次点击有效时回调
    abstract fun onClickValid(v: View?)
}

Android 多点击监听器

代码语言:javascript代码运行次数:0运行复制
abstract class MultiClickListener(var count: Int = 5, var duration: Long = 2000) : View.OnClickListener {

    //记录点击次数
    private var hits: LongArray = LongArray(count)

    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)
            // 将所有时间重置
            hits.forEachIndexed { index, _ ->
                hits[index] = 0
            }
        }
    }

    //当连续多次点击有效时回调
    abstract fun onClickValid(v: View?)
}

本文标签: Android 多点击监听器