我当前的代码如下所示:
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//blah
}
});
但是,我希望在单击页面后和onClick
执行方法之前有 1 秒的延迟。我怎样才能做到这一点?
我当前的代码如下所示:
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);
}
});
在科特林;
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
})