首先 方法類:
package com.zhou.base.utils
/**
* Created by zhou on 17/3/20.
*/
object ToolsUtil {
//防止連續(xù)點(diǎn)擊
/** 判斷是否是快速點(diǎn)擊 */
private var lastClickTime: Long = 0
val isFastDoubleClick: Boolean
get() {
val time = System.currentTimeMillis()
val timeD = time - lastClickTime
if (timeD < 500) {
return true
}
lastClickTime = time
return false
}
}
代碼很容易理解,就是計(jì)算點(diǎn)擊的時(shí)間差退盯,從而控制可點(diǎn)擊的頻率。
創(chuàng)建兩個(gè)類:
NoDoubleClickListener.kt
package com.zhou.base.listener
import android.view.View
import com.zhou.base.utils.ToolsUtil
/**
* Created by zhou on 16/12/14.
*/
abstract class NoDoubleClickListener : View.OnClickListener {
override fun onClick(v: View) {
if (ToolsUtil.isFastDoubleClick) {
return
}
onNoDoubleClick(v)
}
abstract fun onNoDoubleClick(v: View?)
}
NoDoubleOnItemClickListener.kt
package com.zhou.base.listener
import android.view.View
import android.widget.AdapterView
import com.zhou.base.utils.ToolsUtil
/**
* Created by zhouruiyong on 16/12/14.
*/
abstract class NoDoubleOnItemClickListener : AdapterView.OnItemClickListener {
override fun onItemClick(
adapterView: AdapterView<*>?,
view: View,
position: Int,
l: Long
) {
if (ToolsUtil.isFastDoubleClick) {
return
}
onNoDoubleItemClick(adapterView, view, position, l)
}
abstract fun onNoDoubleItemClick(
adapterView: AdapterView<*>?,
view: View?,
position: Int,
id: Long
)
}
后面將view的點(diǎn)擊事件設(shè)置為以上的類或者其子類,就可以防止連續(xù)點(diǎn)擊了破花。