【发布时间】:2018-04-14 08:08:47
【问题描述】:
我正在制作一款基于反应的 Android 游戏,包含多个关卡。
在级别 1 中,我希望 ImageView 以快速的随机间隔从红色变为绿色,用户要在绿色时单击 ImageView 来得分。
我正在使用一个单独的类来运行 AsyncTask,以随机更改 ImageView 的背景颜色。该代码包含在一个 while 循环中,该循环正在检查 levelPoints 是否达到 50(这些点根据 level1 类中的 OnClick 事件上升)。
问题来了 - 背景颜色改变一次,在 while 循环期间不会改变。我已经使用Log.v找出了随机数和级别点的状态,这似乎表明循环工作正常。
该项目是 WIP,但我认为这部分应该处于我可以通过单击绿色 50 次结束循环来测试它是否工作的阶段。不是这样的。
感谢任何关于为什么在 while 循环期间颜色不会改变的帮助。我已经在 StackOverflow 和其他网站/论坛中搜索过类似问题,但找不到任何类似性质的问题。
这是 GitHub 上相关文件的链接
【问题讨论】:
-
你需要重绘视图。该值已更改,但不会在您的 UI 中重绘/反映
-
是在 UI 线程中使用 invalidate() 并在 AsyncTask 类中使用 postinvalidate() 完成的吗?
-
我不确定这些方法。但是您可以在异步任务中添加回调方法以在主线程中运行。然后你可以从主线程更新你的背景。
标签: android random colors android-asynctask