我在某个活动上有一个按钮,当我单击它时,我希望该按钮更改颜色,请稍等片刻,然后再次更改颜色。
我尝试了以下两种睡眠方式:
尝试1:
public void buClick(View view) {
Button buCard = (Button) view;
buCard.setBackgroundColor(Color.GREEN);
TimeUnit time = TimeUnit.SECONDS;
try {
time.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
buCard.setBackgroundColor(Color.RED);
}
尝试2:
public void buClick(View view) {
Button buCard = (Button) view;
buCard.setBackgroundColor(Color.GREEN);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
buCard.setBackgroundColor(Color.RED);
}
两种方法的结果相同:
按钮永远不会变为绿色;我在做什么错了?
谢谢
答案 0 :(得分:1)
请勿阻止您的UI线程。请改用处理程序。
如果您尝试阻止主线程,则整个UI线程将停止导致应用程序冻结,一旦睡眠结束,您将调用setBackgroundColor(Color.RED)。而且应用了红色,这就是为什么您看不到绿色的变化的原因。
如果使用以下情况的处理程序,而该处理程序不会阻塞UI线程,则您应该能够看到颜色的变化。
在这里https://developer.android.com/guide/components/processes-and-threads.html
了解为什么不应该阻止UI线程Test Student,10, 3
Test Student1,12, 1
Test Student2,5, 3
Test Student3,5, 4