Java 在Android中使用计时器启用和禁用按钮

Java 在Android中使用计时器启用和禁用按钮,java,android,Java,Android,我在主视图中有两个按钮,按钮1和按钮2。在应该再次启用的特定时间段之后,如何禁用按钮1的特定时间段。以下是一个示例: Handler handler = new Handler(); handler.postDelayed(new Runnable(){ @Override public void run(){ button.setEnabled(false); } }, 5000); 休息一下,想想你自己。使用倒计时 说你有按钮1 button1.setEnabled(false

我在主视图中有两个按钮,按钮1和按钮2。在应该再次启用的特定时间段之后,如何禁用按钮1的特定时间段。

以下是一个示例:

Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@Override
  public void run(){
    button.setEnabled(false);
}
}, 5000);
休息一下,想想你自己。

使用倒计时

说你有按钮1

button1.setEnabled(false);
new CountDownTimer(5000, 10) { //Set Timer for 5 seconds
        public void onTick(long millisUntilFinished) {
        }

        @Override
        public void onFinish() {
               button1.setEnabled(true);
        }
    }.start()


Aba:应用了正确的View.setEnabled方法。

您可以调用此方法。试试这个

private void blink(){
    final Handler handler = new Handler();
    new Thread(new Runnable() {
        @Override
        public void run() {
            int timeToBlink = 5000;
            try{
                Thread.sleep(timeToBlink);
            }catch (Exception e) {

            }
            handler.post(new Runnable() {
                @Override
                public void run() {

                    if(button.isEnabled()){
                        button.setEnabled(false);
                    }else{
                        button.setEnabled(true);
                    }
                    blink();
                }
            });
        }
    }).start();
}
通过调用此方法,您将获得想要的效果

private fun initButton() {
    button.setOnClickListener {

        it.isEnabled = false
        it.postDelayed({ it.isEnabled = true }, 3000)

        //do stuff
    }
}

这在Kt中起作用,确实需要一个处理程序来使用带有Delays的处理程序。最好使用Timer类中的倒计时计时器,而不是处理程序,因为它的作用域将在活动中。这些解决方案即使在应用程序关闭后也有效吗?我应该将Toast放在哪里?放在onFinish中