イベント間でタイマーを使用したい 例: ユーザーは、ボタンをクリックしてから 30 秒間待機する必要があります。
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
ボタンは 30 秒に 1 回しかクリックできないということですか? その場合、私は次のようなことをします:
public void onClick(View v) {
long time = System.System.currentTimeMillis();
if(time >= lastClickTime + (30 * 1000) || lastClickTime == 0){
lastClickTime = time;
...
}
}
あなたは別々Thread
に使用することができますpostDelayed
This SO answerは、それを行う方法と他のいくつかのオプションを示しています
を無効にButton
してから、関数onClick()
で再度有効にしますrun()
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
}
});