我想将按钮的背景更改为红色,然后在调用另一个活动之前等待一秒钟。
这是我的代码:
btn1.setBackgroundColor(Color.RED);
SystemClock.sleep(1000);
startActivity(intent);
问题是应用程序休眠一秒钟并启动活动,但按钮的颜色不会改变。我该如何解决这个问题?
答案 0 :(得分:2)
使用时 SystemClock.sleep(1000);
处理Looper的主线程会休眠。
然后当它返回时,首先改变颜色,然后启动Activity。这是一个接一个地做的,没有延迟,所以你无法看到改变的颜色。
使用Handler postDelayed,它将帮助你在你需要的延迟之后运行活动,也不会通过睡眠阻止主循环线程
答案 1 :(得分:0)
不是设置Color但你无法看到它。我将解释为什么你无法看到。
1秒后颜色设定。但是你在1秒后开始新的活动,所以你无法看到颜色的变化。实际上,睡眠暂停了一段时间。
要注意这种效果,请尝试以下代码。
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
v.setBackgroundColor(Color.RED);
SystemClock.sleep(5000); // color will set after 5 seconds
}
});
我不知道如何克服这个问题。我回答是为了告知这一点。
答案 2 :(得分:0)
您正在睡眠的同一个线程上设置颜色,因此您的更改不可见,因为sleep命令会导致UI冻结。
您应该设置颜色,然后生成一个新线程,该线程将在启动其他活动之前等待5秒。