android - 为什么我无法使用 Kotlin 更改 ImageView 的可见性?
问题描述
ImageView 仅更改一次可见性。我不明白可能是什么问题。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
println("Let's do it")
val btn: ImageView = findViewById(R.id.imageView)
while (true) {
Handler().postDelayed({
btn.isVisible = true
Handler().postDelayed({
btn.isVisible = false
}, 1000)
}, 1000)
}
}
}
解决方案
让我们简化这段代码
while (true) { // you will keep running this
Handler().postDelayed({
... // this code will won't be exec until 1000ms
}, 1000)
}
所以你可以看到,1000ms你会在消息队列中添加这么多消息。
OK,让我们看看这个时间段 1000-2000ms:
在这个时间段,handler 会做两件事:
- 继续在处理程序中发布延迟消息
- 执行前 1000 毫秒的消息
第 2 步还将做两件事:
- 设置可见=真
- 发布消息 make visible = false
所以让我们看看 2000-3000 毫秒:
这一次会做 3 件事:
- 继续在处理程序中发布延迟消息
- 执行前 1000 毫秒的消息
- 执行 step2 的消息
step3 会做一件事;使视图不可见。
所以:
0-1000ms:视图什么都不做。
1000-2000ms:视图将被设置为可见
2000-:视图将非常快速地设置为可见和不可见,因此您无法区分。
推荐阅读
- git - 为什么 git rev-parse HEAD 显示的提交与 git log 不同?
- javascript - 在 React 组件文件夹中编译 SASS 文件
- android - Android - 将 C++ 套接字服务器移植到 Android?
- arrays - Ballerina 将元素附加到数组的末尾
- c# - Kestrel 修改传入的 http 标头
- python - Python3在关键字后解析字符串
- javascript - Postgresql 数据库查询返回空数组
- php - php编码:违反编码规则
- json - 每次向其写入新信息时,JSON 文件都会清除
- html - 如何正确对齐元素?