Android 更改按钮和睡眠的背景
我想将按钮的背景更改为红色,然后等待一秒钟再调用另一个活动 这是我的代码:Android 更改按钮和睡眠的背景,android,button,sleep,system-clock,Android,Button,Sleep,System Clock,我想将按钮的背景更改为红色,然后等待一秒钟再调用另一个活动 这是我的代码: btn1.setBackgroundColor(Color.RED); SystemClock.sleep(1000); startActivity(intent); 问题是应用程序休眠一秒钟并启动活动,但按钮的颜色不变。如何修复此问题?不,它正在设置颜色,但您无法看到。我会解释你为什么看不见 颜色在1秒后设置。但是你在1秒后开始新的活动,所以你看不到颜色的变化。实际上,睡眠在给定的时间内暂停了线程 要注意这种效果,请
btn1.setBackgroundColor(Color.RED);
SystemClock.sleep(1000);
startActivity(intent);
问题是应用程序休眠一秒钟并启动活动,但按钮的颜色不变。如何修复此问题?不,它正在设置颜色,但您无法看到。我会解释你为什么看不见 颜色在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
}
});
我不知道如何克服这个问题。我回答只是为了通知您。您正在睡眠的同一线程上设置颜色,因此您的更改不可见,因为sleep命令会导致UI冻结 您应该设置颜色,然后生成一个新线程,该线程将在启动其他活动之前等待5秒 当您使用 系统时钟。睡眠(1000) 处理活套的主线程进入睡眠状态 然后当它返回时,它首先改变颜色,然后开始活动。这些都是一个接一个地进行的,没有延迟,所以你无法看到改变的颜色
使用处理程序postDelayed,它将帮助您在需要的延迟后运行活动,并且不会因睡眠而阻塞主循环线程谢谢您的回答。我想尝试一个当按钮颜色为红色时中断的while循环,但我不知道如何检查这个。如果试图使用ColorDrawable类的getColor()方法,但eclipse表示该方法不存在。你知道另一种检查按钮背景颜色的方法吗?