我想在事件之間使用定時器,例如:用戶必須在點擊按鈕之間等待30秒,我該怎麼做?兩個事件之間的定時器
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
我想在事件之間使用定時器,例如:用戶必須在點擊按鈕之間等待30秒,我該怎麼做?兩個事件之間的定時器
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
您是說該按鈕應該每30秒只能點擊一次?在這種情況下,我會做這樣的事情:
public void onClick(View v) {
long time = System.System.currentTimeMillis();
if(time >= lastClickTime + (30 * 1000) || lastClickTime == 0){
lastClickTime = time;
...
}
}
您可以使用單獨的Thread
和postDelayed
This SO answer展示瞭如何做到這一點,以及其他幾個選項
你會在你的onClick()
然後禁用Button
在重新啓用您的run()
功能
A CountDownTimer將是另一種方式。你只需重新啓用Button
在onFinish()
你可以看看這些,看看哪些工作最適合你的特殊情況
這些都是一些的,你可以做到這一點的方式。但是,如果您在此告訴我們您的最終比賽,我們可能會幫助您找到更好的方法。您不希望用戶無法在30秒內完成任何操作
你可以使用一個處理程序的postDelayed方法是這樣的:
Button b; // instance variable
// now in onCreate
b = (Button)findViewById(R.id.button1);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
OuterClass.this.b.setEnabled(true);
}
}, 30000); // 30 seconds = 30000 ms
b.setEnabled(false);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// do whatever you have to do
}
});
謝謝:)它'工作 –