改变按钮的背景并睡觉

时间:2012-02-06 11:46:54

标签: android button sleep system-clock

我想将按钮的背景更改为红色,然后在调用另一个活动之前等待一秒钟。

这是我的代码:

btn1.setBackgroundColor(Color.RED);
SystemClock.sleep(1000);
startActivity(intent);

问题是应用程序休眠一秒钟并启动活动,但按钮的颜色不会改变。我该如何解决这个问题?

3 个答案:

答案 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秒。