我当前的代码如下:
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//blah
}
});
但是,我希望在我点击页面之后和执行onClick
方法之前有1秒的延迟。我该怎么做?
为什么不尝试在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);
}
});
在kotlin;
fun View.disableClickTemporarily(){
isClickable = false
postDelayed({
isClickable = true
},500)
}
并在onClick功能中使用此扩展
override fun onClick(v: View) {
v.disableClickTemporarily()
//...your code
}
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Handler myHandler = new Handler();
myHandler.postDelayed(mMyRunnable, 1000);
}
});
Runnable mMyRunnable = new Runnable() {
public void run() {
}
};
class DelayedClickListener(private val delayMillis : Long = 500 , private val function: (view: View?) -> Unit) : View.OnClickListener {
override fun onClick(v: View?) {
v?.let { view ->
view.isClickable = false
Handler().postDelayed({ view.isClickable = true }, abs(delayMillis))
}
function.invoke(v)
}
}
然后你可以像下面这样使用它:
clickableView.setOnClickListener(DelayedClickListener { view ->
//do what you want here
})
或者你可以在实现过程中设置延迟毫秒,如下所示:
clickableView.setOnClickListener(DelayedClickListener(delayMillis = 1000) { view ->
//do what you want here
})