更改按钮的背景并进入睡眠状态



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

这是我的代码:

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

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

使用SystemClock.sleep(1000);

处理Looper的主线程进入睡眠状态。

然后当它返回时,它首先更改颜色,然后启动"活动"。它们一个接一个地完成,没有延迟,所以u看不到变化的颜色。

使用处理程序postDelayed,它将帮助你在你需要的延迟之后运行活动,并且不会通过睡眠阻塞主循环线程

不,它正在设置"颜色",但您看不到。我会解释你为什么看不见。

颜色在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秒后再启动其他活动。

相关内容

  • 没有找到相关文章

最新更新