更改按钮的背景和睡眠

问题描述:

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

这是我的代码:

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 
      } 
     }); 

我不知道如何解决这个问题。我只是回答这个问题。

+0

谢谢您的回答延迟后的活动。我想尝试一个while循环,当按钮的颜色是红色时会中断,但我不知道如何检查。如果试图使用ColorDrawable类的getColor()方法,但eclipse说这个方法不存在。你知道另一种方法来检查按钮的背景颜色吗? – user1186043 2012-02-06 12:36:21

您正在设置睡眠的同一线程上的颜色,因此您的更改不可见,因为睡眠命令导致UI冻结。

你应该设置颜色,然后产生一个新的线程,等待5秒钟,然后再启动其他活动。