kotlin View防止二次点击

303 阅读1分钟

防止View二次点击


fun View.click(delay:Long = 5000,method:(View) -> Unit){
    setOnClickListener {
        if (canClick(delay)){
            method.invoke(this)
        }
    }
}

var View.lastClickMillis:Long
    get() = getTag(R.id.triggerLastTimeKey) as? Long ?:0L
    set(value) {
        setTag(R.id.triggerLastTimeKey,value)
    }

fun View.canClick(delay:Long = 500): Boolean {
    var canClick = false
    val currentMills = System.currentTimeMillis()
    if (currentMills - lastClickMillis >= delay){
        canClick = true
        lastClickMillis = currentMills
    }
    return canClick
}

调用

helloTv?.click {
    LogUtils.d("hello textview is click....")
}