我有一个按钮,当按下它时会播放音频文件。我想在按钮上放置5秒的延迟,这样用户就不会将按钮混合并反复播放声音。我猜我真正想要的是按钮在按下后被禁用5秒钟。有谁知道怎么做?
答案 0 :(得分:31)
在按钮的onClickListener中:
myButton.setEnabled(false);
Timer buttonTimer = new Timer();
buttonTimer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
myButton.setEnabled(true);
}
});
}
}, 5000);
这将在单击时禁用该按钮,并在5秒后再次启用它。
如果在扩展View而不是在Activity中的类中处理click事件,则执行相同的操作,但将runOnUiThread
替换为post
。
答案 1 :(得分:28)
您可以停用按钮,然后使用按钮上的postDelayed方法。
myButton.setEnabled(false);
myButton.postDelayed(new Runnable() {
@Override
public void run() {
myButton.setEnabled(true);
}
}, 5000);
这类似于Timer解决方案,但它可能更好地处理配置更改(例如,如果用户旋转手机)
答案 2 :(得分:2)
你走了。
((Button) findViewById(R.id.click))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((Button) findViewById(R.id.click)).setEnabled(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
((Button) findViewById(R.id.click))
.setEnabled(true);
}
}, 5000);
}
});