出现情况
最常见的就是App启动时候 加载启动页出现白屏一段时间, 给用户的感觉是非常不好的。
加载方式
我们在Activity的onCreate()方法中调用了setContentView()方法时候,传入了我们绘制的layout布局,也就是我们理论上应该看到的Activity布局内容,但是Android系统在启动一个新的Activity时,首先进行的并不是绘制Activity setContentView(),
一个Activity里面包含四部分, PhoneWindow、DecorView、TitleView、ContentView, 当创建Activity进行绘制时会先绘制前三个控件,这个时候ContentView还没加载进来,所以布局里什么东西都看不到,那么就出现了 黑、白屏的现象。
解决方法
每个App都有一个默认主题背景色, 在res资源文件下 的values文件下 styles.xml文件 ,这个里面是设置主题色 等等一些样式的。
第一种方法:
(1)、将主题背景变成透明的,这样在ContentView加载出来之前,我们会透过启动的Activity看到桌面,就不会有黑/白屏的现象。再把标题栏去掉,把Activity设置成全屏的,效果挺不错,缺点是如果启动的是一个有复杂耗时操作的Activity,那么会有一种延迟的感觉。
<style name="AppTheme" parent="android:Theme.Light.NoTitleBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:WindowFullscreen">true</item>
</style>
(2)、将主题背景设置成一张图片,但是图片的屏幕适配问题就需要考虑了,主题里的背景图片会自动拉伸。
<style name="AppTheme" parent="android:Theme.Light.NoTitleBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowBackground">@drawable/bg_splash</item>
<item name="android:WindowFullscreen">true</item>
</style>