我可以使用以下方法成功更改颜色:
TextView1.setOnClickListener{
TextView1.setBackgroundResource(R.color.red);
}
但是如果我用
TextView1.setOnClickListener{
TextView1.setBackgroundResource(R.color.red);
Thread.sleep(1_000)
TextView1.setBackgroundResource(R.color.white);
}
颜色完全不变。这是为什么?
最佳答案
这是由于以下事实:调用Thread.sleep()
只会导致线程挂起,在此特定示例中,它导致GUI(图形用户界面)线程挂起。
屏幕上gui元素的实际绘制发生在同一线程上,在他完成调用您的方法之后,您没有给他时间这样做。
您可以通过调度延迟的 call 来达到相同的结果。
TextView1.setOnClickListener {
TextView1.setBackgroundResource(R.color.red);
Handler().postDelayed({
[email protected](java.lang.Runnable {
TextView1.setBackgroundResource(R.color.white);
})
}, 1000)
}