更改按钮的背景和睡眠
问题描述:
我想将按钮的背景更改为红色,然后在调用其他活动之前等待一秒钟。更改按钮的背景和睡眠
这是我的代码:
btn1.setBackgroundColor(Color.RED);
SystemClock.sleep(1000);
startActivity(intent);
的问题是应用程序睡眠一秒钟,开始活动,但按钮的颜色没有变化。我怎样才能解决这个问题?
答
当您使用 SystemClock.sleep(1000);
处理Looper的主线程将获得Sleep。
然后,当它返回它首先改变颜色,然后启动活动。这是一个接一个地完成的,所以你不能看到改变的颜色。
使用处理器postDelayed这将帮助ü运行u需要,并且也没有被睡眠阻塞主弯针线
答
不,它是设置颜色,但你无法看到。我会解释你为什么看不到。
颜色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
}
});
我不知道如何解决这个问题。我只是回答这个问题。
答
您正在设置睡眠的同一线程上的颜色,因此您的更改不可见,因为睡眠命令导致UI冻结。
你应该设置颜色,然后产生一个新的线程,等待5秒钟,然后再启动其他活动。
谢谢您的回答延迟后的活动。我想尝试一个while循环,当按钮的颜色是红色时会中断,但我不知道如何检查。如果试图使用ColorDrawable类的getColor()方法,但eclipse说这个方法不存在。你知道另一种方法来检查按钮的背景颜色吗? – user1186043 2012-02-06 12:36:21