我正在开发的游戏在第一次加载时做了一些预处理,我想向用户显示一个“加载%”,以清楚地表明游戏没有冻结。
我试图通过等待主窗体向用户显示,然后在执行预处理时显示更新进度条来完成此操作。
要使预处理起作用,我需要两条信息:
表单是它的最终大小(在整个显示中最大化).The表单对用户是可见的。
这是一个日志,显示了加载游戏时触发表单事件的顺序。请记住,我实际上并没有在这些事件中使用代码来更改表单的大小:
FormCreate
FormResize, clientSize : 0x0
FormResize, clientSize : 0x0
FormResize, clientSize : 0x0
FormResize, clientSize : 0x0
FormShow
FormActivate
FormResize, clientSize : 360x640
目前,我尝试在最后一次调整大小时显示加载屏幕(显示窗体的大小实际上是显示器的大小),但此时,主窗体仍然不可见(即使在FormShow和FormActivate之后也是如此),直到我的预处理代码完成后,我才显示安卓的默认“灰度渐变”屏幕,而从不显示进度条。
我试着在更新进度条后调用"application.processmessages“,但没有什么不同...
如何检测我的主窗体何时对Android用户可见?
更新
我创建了一个小应用程序来演示这个问题:
发布于 2018-06-11 20:28:49
BecameActive事件(ApplicationEvent)怎么样?使用这篇文章,用谷歌翻译http://delphifmandroid.blogspot.com/2016/09/delphi-android.html翻译它
正在启动应用程序:
09-20 20:13:43.151: I/info(15893): FMX: Project1: FormCreate
09-20 20:13:43.151: I/info(15893): FMX: Project1: FormResize
09-20 20:13:43.151: I/info(15893): FMX: Project1: FormResize
09-20 20:13:43.161: I/info(15893): FMX: Project1: FormResize
09-20 20:13:43.161: I/info(15893): FMX: Project1: FormShow
09-20 20:13:43.161: I/info(15893): FMX: Project1: FormActivate
09-20 20:13:43.161: I/info(15893): FMX: Project1: Finished Launching
09-20 20:13:43.221: I/info(15893): FMX: Project1: FormPaint
09-20 20:13:43.231: I/info(15893): FMX: Project1: Became Active
09-20 20:13:43.261: I/info(15893): FMX: Project1: FormPaint
09-20 20:13:43.281: I/info(15893): FMX: Project1: FormPaint
09-20 20:13:43.311: I/info(15893): FMX: Project1: FormPaint
https://stackoverflow.com/questions/50738055
复制相似问题