为什么首先执行 try 块,我希望颜色先改变,然后它应该休眠 5000 毫秒。我的意思是系统在颜色改变之前休眠。
私有 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();
}
};`
我猜是因为视图的属性已更新,但屏幕重绘卡在您的睡眠后面。不要在主线程上休眠。
相反,在 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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)