13

ボタンがあり、それを押すとオーディオファイルが再生されます。ボタンに 5 秒の遅延を設定して、ユーザーがボタンを押したり、サウンドを何度も再生したりしないようにします。ボタンを押してから5秒間無効にするために、私が本当に望んでいることは何だと思います。誰もこれを行う方法を知っていますか?

4

3 に答える 3

37

ボタンの 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 秒後に再び有効になります。

クリック イベントが、Activity ではなく View を拡張するクラスで処理される場合は、同じことを行いますがrunOnUiThreadpost.

于 2012-11-15T13:11:13.787 に答える
35

ボタンを無効にしてから、ボタンでpostDelayedメソッドを使用できます。

myButton.setEnabled(false);
myButton.postDelayed(new Runnable() {
    @Override
    public void run() {
        myButton.setEnabled(true);
    }
}, 5000);

これはタイマー ソリューションに似ていますが、構成の変更をより適切に処理できる場合があります (たとえば、ユーザーが電話を回転させた場合)。

于 2012-11-15T13:18:47.033 に答える
5

どうぞ。

((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);

    }
});
于 2012-11-15T13:15:51.123 に答える