0

イベント間でタイマーを使用したい 例: ユーザーは、ボタンをクリックしてから 30 秒間待機する必要があります。

Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
  @Override
   public void onClick(View v) {

   }
});
4

3 に答える 3

2

ボタンは 30 秒に 1 回しかクリックできないということですか? その場合、私は次のようなことをします:

public void onClick(View v) {
    long time = System.System.currentTimeMillis();
    if(time >= lastClickTime + (30 * 1000) || lastClickTime == 0){
        lastClickTime = time;
        ...
    }
}
于 2013-06-22T01:26:37.833 に答える
1

あなたは別々Threadに使用することができますpostDelayed

This SO answerは、それを行う方法と他のいくつかのオプションを示しています

を無効にButtonしてから、関数onClick()で再度有効にしますrun()

ハンドラ

タイマータスク

CountDownTimerは別の方法です。を再度有効にするだけButtonですonFinish()

これらを見て、特定の状況に最も適したものを見つけることができます

これらは、これを達成できる方法の一部です。ただし、ここで最終ゲームを教えていただければ、より良い方法を見つけるお手伝いができるかもしれません. ユーザーが 30 秒間何もできないようにしたくない

于 2013-06-22T01:24:38.657 に答える
0

次のように、ハンドラーの 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
    }

});
于 2013-06-22T01:47:35.660 に答える