Handler handler = new Handler();
if (v.getId() == R.id.play){
handler.postDelayed(new Runnable() {
public void run() {
play.setBackgroundResource(R.drawable.ilk);
}
}, 2000);
play.setText("Play");
}
我想首先设置背景,然后在2秒之后,代码将继续下一行play.setText("Play");
并且这样做。而不是这样,第一个文本出现。 2秒后背景改变。
答案 0 :(得分:4)
Handler.postDelayed
立即返回。然后执行下一行。
在指示毫秒后,将执行Runnable
。
所以你的代码应该是这样的:
void doFirstWork() {
Handler handler = new Handler();
if (v.getId() == R.id.play){
handler.postDelayed(new Runnable() {
public void run() {
play.setText("Play");
doNextWork();
}
}, 2000);
play.setBackgroundResource(R.drawable.ilk);
}
}
void doNextWork() {
...
}
答案 1 :(得分:1)
先设置背景。之后在Handler中设置文本。因为你在postDelayed结束时放了延迟所以它会在所述延迟之后立即开始,或者在你的情况下在2秒后开始。
if (v.getId() == R.id.play){
play.setBackgroundResource(R.drawable.ilk);
new Handler().postDelayed(new Runnable() {
public void run() {
play.setText("Play");
}
}, 2000);
}