刷新视图,同时功能仍然执行

时间:2018-04-16 00:30:16

标签: android kotlin

我正在尝试播放最简单的“动画”,让TextView说“foo”,等一下,再说“bar”。
问题是,不是看到标签很好地移动,而是冻结整秒,然后只是说出最后请求的文本。

val label = findViewById<TextView>(R.id.textView)
val button = findViewById<Button>(R.id.button)

button.setOnClickListener {
    label.text = "foo"
    // some "label.update()" has to be called here
    Thread.sleep(1000)
    label.text = "bar"
}

在C#中我会通过在睡觉前添加“this.update()”来解决这个问题。但是,我在Android库中找不到任何类似的功能。

在函数完成之前,如何强制视图刷新其外观?

1 个答案:

答案 0 :(得分:0)

问题在于它将主线程暂停1000ms。

你可以通过替换这两行来避免这种情况:

Thread.sleep(1000)
label.text = "bar"

......用这个:

Handler().postDelayed( { label.text = "bar" }, 1000)

还有其他方法,但这是最简单的,我想。