APP开发中,第一次运行启动app时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示。
当打开一个Activity
时,如果这个Activity
所属Application
还没有在运行,
系统会为这个Activity
的创建一个进程(每开启一个进程都会有一个Application
,所以Application
的onCreate()
可能会被调用多次),
但进程的创建与初始化都需要时间,在这个动作完成之前,如果初始化的时间过长,屏幕上可能没有任何动静;
这样看起来就像Activity
已经启动起来了,只是数据内容还没有初始化好。
简单的代码解决问题:
创建一个res/drawable下新建一个layer-list, backsplash.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/white" /> <item> <bitmap android:gravity="center" android:src="@drawable/cg_dao" /> </item> </layer-list>
然后
<style name="SplashTheme" parent="AppTheme"> <!-- 将splash图片设置在这,这样这张图片取代白屏 --> <item name="android:windowBackground">@drawable/backsplash</item> <item name="android:windowFullscreen">true</item> <!-- <item name="android:windowIsTranslucent">true</item> --> <!-- 透明背景不要了 --> </style>
最后在AndroidManifest.xml中定义MainActivity设置
:
<activity android:name=".MainActivity" 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>
这里我参考了一个很好的文章来解决这个问题严振杰的博客
可以参考一下。