Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改按钮和睡眠的背景_Android_Button_Sleep_System Clock - Fatal编程技术网

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表示该方法不存在。你知道另一种检查按钮背景颜色的方法吗?