我目前的代码如下:
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//blah
}
});
但是,在我点击页面并执行onClick
方法之前,我希望延迟1秒。我怎样才能做到这一点?
答案 0 :(得分:5)
为什么不尝试在OnClick方法中添加延迟?你必须使用一个处理程序并在其上调用postDelayed方法:
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Execute code here
}
}, 1000);
}
});
答案 1 :(得分:1)
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Handler myHandler = new Handler();
myHandler.postDelayed(mMyRunnable, 1000);
}
});
Runnable mMyRunnable = new Runnable() {
public void run() {
}
};
答案 2 :(得分:1)
class DelayedClickListener(private val delayMillis : Long = 500 , private val function: (view: View?) -> Unit) : View.OnClickListener {
companion object {
var allowToClick = true
}
override fun onClick(v: View?) {
if(allowToClick) {
if(delayMillis > 0){
allowToClick = false
Handler().postDelayed({ allowToClick = true }, delayMillis)
}
function.invoke(v)
}
}
}
然后您可以按以下方式使用它:
clickableView.setOnClickListener(DelayedClickListener { view ->
//do what you want here
})
或者您可以在实现过程中设置延迟毫秒,如下所示:
clickableView.setOnClickListener(DelayedClickListener(delayMillis = 1000) { view ->
//do what you want here
})
答案 3 :(得分:1)
在科特林;
fun View.disableClickTemporarily(){
isClickable = false
postDelayed({
isClickable = true
},500)
}
并在onClick函数中使用此扩展名
override fun onClick(v: View) {
v.disableClickTemporarily()
//...your code
}