如何在 Android 中设置设置文本之间的延迟

How to set a delay between setting texts in Android

如何在 bt.setText("№") 之间设置多个延迟?

    public void buttonOnClick (View button) {
    final Button bt = findViewById(R.id.button);
    bt.setText("3");
    //wait 1 second
    bt.setText("2");
    //wait 1 second
    bt.setText("1");
    //wait 1 second
    bt.setText("Click!");

Java 有定时器 class 可能会做你想做的事。 您可能希望使用 TimerTask class 来生成 basic/empty 任务。 然后 运行 使用 Timer 的任务。

Baeldung Timer

试试这个:

使用postDelayed

 private static int SPLASH_TIME_OUT = 1000;

  if(bt.equal("3")){
        new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {

                // This method will be executed once the timer is over 
                bt.setText("2");
                }
            }, SPLASH_TIME_OUT);  
       }
    ...
    //You can continue like that.
new CountDownTimer(4000, 1000){

   @Override
   public void onTick(long millisUntilFinished) {
       //change text
    }

   @Override
   public void onFinish() {

   }
}.start();

由于您不能在 UI 线程上调用 Thread.sleep(只会显示最终结果),您应该在另一个线程上执行此操作,例如:

关于构造函数:

private Handler handler;
public void onCreate(Bundle x) {
     //super and get bt
     final Button bt = findViewById(R.id.button);
     handler = new Handler() {
           public void handleMessage(Message msg) {
                if(msg.what == 0)
                     bt.setText("Click!");
                else
                     bt.setText(String.toString(msg.what));
           }
     }
}

public void buttonOnClick (View button) {
   final Button bt = findViewById(R.id.button);
   bt.setText("3");
   //wait 1 second
   handler.sendEmptyMessageDelayed(2, 1000);
   //wait 2 second
   handler.sendEmptyMessageDelayed(1, 2000);
   //wait 3 second
   handler.sendEmptyMessageDelayed(0, 1000);
   bt.setText("Click!");
}

请注意,我确实使用了 msg.what 作为此类的标识符,但您可以创建一个带有 obj 参数的消息,稍后您可以使用它。

使用 RxJava 你可以高效地做到这一点。

Observable.interval(1L, TimeUnit.SECONDS)
         .take(2) // how many you want. if you want it infinite just delete this
         .observeOn(AndroidSchedulers.mainThread())
         .subscribeOn(Schedulers.io())
         .subscribe((l) -> {
               text.setText();//According to number
         }, (t) -> {
               //Handle Error
         });