delphi xe5 编译的程序在启动时会有短暂的黑屏出现,这个现象产生是因为启动首个activity时会加载一些初始化数据,整个时间大约在2~3秒,如何处理?
网上有些资料,这里主要参考和整理了CSDN论坛上第42#liaobo的回复。
第一步:建立2个文件:loading.png 和 styles.xml,其中loading.png 是启动时替代黑屏的图片,styles.xml是对背景图片的定义,其内容为:
<resources>
<style name="MyTheme.NoTitleBar.CustomBackground" parent="@android:Theme.Black">
<item name="android:windowBackground">@drawable/loading</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
特别需要注意的是:
(1)Delphi中代码是大小写不敏感的,所以Delphi程序员一般在写程序时不太注意大小写。而在Java下大小写是敏感的,在styles.xml定义中“loading”的这个文件名一定要用小写,否则在部署时会报文件名错误。
(2)这两个文件可以放在任何目录下,我是放在了工程文件所在目录下新建的res目录。如下图:
第二步:将建立好的2个文件加入到工程的部署文件列表中,操作是打开工程的部署菜单,点击增加按钮(Add Files),将建立好的2个文件分别加入到列表中,如下图:
对加入的2个文件,修改PlatForm、RemotePath两个属性,其中PlatForm只选择Android,如下图:
按下F2或双击进入,修改RemotePath属性,如下图
其中
styles.xml的RemotePath为 resvalues
loading.png的RemotePath为 resdrawable-port
如下图:
第三步:Ctrl+F9编译工程文件,并生成相关配置文件,打开工程文件所在目录,找到工程缺省配置文件AndroidManifest.template.xml,如下图:
用Delphi IDE 或记事本打开 AndroidManifest.template.xml 文件,查找以下文字:
android:theme="%theme%"
替换为以下文字,注意是替换,不是新增。
android:theme="@style/MyTheme.NoTitleBar.CustomBackground"
第四步:再次编译,部署到虚拟机,并运行后看到的启动效果如下:
这里需要说明的是:
有人说Delphi xe5 for Android的编译太慢,其实不是这样的。Delphi的编译器在生成.so文件时是非常快的,在我的机器上大约3~5秒就完成。慢是慢在部署和安装到虚拟机的时间。在我机器上生成apk文件大约需要10秒,而将apk文件下载到虚拟机上的时间取决于传输速率,在我的机器上是130k/s~500k/s之间,如下图:
这个缓慢的下载过程超过了一分钟,所以感觉很慢。如果使用真实设备,比如手机或pad,由于USB下载速度很快,反而用起来感觉不错,只是调试速度很慢。