应用启动时,会初始化很多东西,初始化的这段时间还没有绘制UI,所以可能会黑屏或者白屏一段时间,这对用户体验很不友好。解决办法第一种是优化app性能,使初始化时间减少,瞬间UI绘制完成;第二种是在初始化这段时间(黑屏或者白屏时间),正常显示UI,给用户好的体验(不减少初始化时间)。性能优化是一块很复杂的内容,在这里就先不说了。下面我就着第二种方法给大家提供几种解决方案。
第一种
在SplashActivity的主题中设置透明:
<style name="SplashTheme" parent="AppBaseTheme">
<!-- 将splashactivity背景设置透明-->
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowFullscreen">true</item>
</style>
这样在启动初始化时,SplashActivity透明,去除了黑屏或者白屏的情况,不过也会让用户感觉延迟了几秒,用户体验不太好。
第二种
将SplashActivity中的背景图片在SplashActivity的主题中设置,代码如下:
<style name="SplashTheme" parent="AppBaseTheme">
<!-- 将splash背景图片在Theme中设置-->
<item name="android:windowBackground">@drawable/splash</item>
<item name="android:windowFullscreen">true</item>
</style>
这样白屏或者黑屏的时间也会显示SplashActivity的背景。
最后将SplashActivity的主题设置成刚才定义好的Theme:
<activity android:name=".activity.SplashActivity"
android:theme="@style/SplashTheme"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
虽然在某种程度上,问题解决了,但我还是希望大家能优化app性能,真正的减少初始化时间,真正的提升用户体验!
大功告成,谢谢大家!