为什么首先执行try块,我希望颜色先改变,然后它应该睡眠5000毫秒.我的意思是系统在颜色变化之前就会睡觉.private OnClickListener CheckAnswer = new OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
disableButtons();
Button incoming=(Button) arg0;
if(incoming.getText().toString().equals(Q.getAnswer()))
{
incoming.setBackgroundColor(Color.GREEN);
correct++;
score+=15;
}
else
{
incoming.setBackgroundColor(Color.RED);
wrong++;
if(C1.getText().toString().equals(Q.getAnswer()))
C1.setBackgroundColor(Color.GREEN);
else if(C2.getText().toString().equals(Q.getAnswer()))
C2.setBackgroundColor(Color.GREEN);
else if(C3.getText().toString().equals(Q.getAnswer()))
C3.setBackgroundColor(Color.GREEN);
modifyScore();
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
questionGenerator();
}
};`
Run Code Online (Sandbox Code Playgroud)
我猜是因为视图的属性已更新,但屏幕重绘卡在你的睡眠后面.不要睡在主线上.
而是在您的Activity的onCreate中创建一个Handler并将延迟的Runnable发布到它.
private Handler mHandler;
protected void onCreate(Bundle savedInstanceState) {
mHandler = new Handler();
}
...
private OnClickListener CheckAnswer = new OnClickListener() {
public void onClick(View view) {
// fix up view
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
questionGenerator();
}
}, 10000);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |