如何在 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 的任务。
试试这个:
使用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
});
如何在 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 的任务。
试试这个:
使用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
});