我需要在它们之间显示间隔2秒的4个“吐司”。
我如何以这样的方式执行此操作,即他们等待彼此以及程序本身等待直到最后一个显示?
答案 0 :(得分:1)
只需使用处理程序。
handler有一个名为sendMessageDelayed的方法(Message msg,long delayMillis)。
只需按2秒的时间间隔安排短信。
这是一个示例代码。
int i=1;
while(i<5){
Message msg=Message.obtain();
msg.what=0;
hm.sendMessageDealayed(msg, i*2);
i++;
}
现在这段代码会在每2秒后调用handler的方法handleMessage。
这是你的处理程序
Handler hm = new Handler(){
public void handleMessage(Message msg)
{
//Toast code.
}
};
你完成了。
感谢。
答案 1 :(得分:1)
处理程序绝对是要走的路,但我只是postDelayed而不是处理空消息。
同样扩展Toast并创建一种显示更长时间的方法很不错。
示例代码:
// make sure to declare a handler in the class
private final Handler mHandler = new Handler();
// The method to show longer
/**
* Show the Toast Longer by repeating it.
* Depending upon LENGTH_LONG (3.5 seconds) or LENGTH_SHORT (2 seconds)
* - The number of times to repeat will extend the length by a factor
*
* @param number of times to repeat
*/
public void showLonger(int repeat) {
// initial show
super.show();
// to keep the toast from fading in/out between each show we need to check for what Toast duration is set
int duration = this.getDuration();
if (duration == Toast.LENGTH_SHORT) {
duration = 1000;
} else if (duration == Toast.LENGTH_LONG) {
duration = 2000;
}
for (int i = 1; i <= repeat; i++) {
// show again
handler.postDelayed(new Runnable() {
@Override
public void run() {
show();
}
}, i * duration);
}
}