Activity启动时,会先创建窗体,然后再创建界面布局,黑屏或白屏出现的原因是因为创建窗体成功后,在Activity布局加载完成之前,这段时间界面上因为没有内容显示,显示的窗体的默认背景颜色。
在Activity的布局中,通过调整布局已经不能够满足这种情况下的问题了,所以需要对窗体的背景做相应的处理。
常用的方案有两种。
第一种比较简单的是,将启动界面的主题加上窗体透明的属性:
<style name="Theme.AppStartupBackground" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
</style>
这种就是在Activity布局加载完之前,看到的还是启动之前的页面内容,如Launcher或SystemUI。虽然从视觉上能够达到不闪黑屏或白屏,但是会让人有一种点击了之后启动过程有点缓慢的感觉,体验较差。
第二种就是针对窗体背景进行处理,既然显示黑屏或白屏是由于窗体背景导致,那可以给窗体背景设置一个我们想要的背景:
<style name="Theme.AppStartupBackground" parent="android:Theme">
<item name="android:windowBackground">@drawable/startup_bg</item>
<item name="android:windowNoTitle">true</item>
</style>
这样的设置能够达到预期的效果,推荐使用这种方式。