Android App启动后出现白屏或者黑屏解决方式
原因
当要打开一个Activity,而这个Activity所属的应用还没有运行,这时候系统将会为这个Activity所属的应用创建一个进程。但是进程的创建和初始化需要时间,而在这个过程中既无法显示程序又不能停止原处不做任何操作。否则用户以为没有点击到,这时候就有StartWindow的概念。 StartWindow是一个在应用程序创建并初始化成功显示的临时窗口,在程序初始化完成前显示这个窗口,以告知用户系统已经了他要打开这个应用并做出了响应。当程序初始化完成后显示用户UI 并移除这个窗口。 显示白屏或者黑屏,是由你的启动Activity或者Application的主题来决定的
解决方式之使用图片
为启动页设置主题
<activity android:name=".activity.HnSplashActivity" android:screenOrientation="portrait" android:theme="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
在Style中为WindowBackground设置一张背景图。
<!--// Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/main_color</item> <item name="colorPrimaryDark">@color/main_color</item> <item name="colorAccent">@color/main_color</item> </style> <!--启动页背景--> <style name="SplashTheme" parent="AppTheme"> <item name="android:windowBackground">@drawable/start</item> </style>
解决方式之使用颜色
为启动页设置主题
<activity android:name=".activity.HnSplashActivity" android:screenOrientation="portrait" android:theme="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
在Style中为WindowBackground设置颜色。
<!-- 防止欢迎页白屏或者黑屏,设置图片 --> <style name="SplashTheme" parent="AppBaseTheme"> <item name="android:windowBackground">@drawable/splash</item> <item name="android:windowFullscreen">true</item> <item name="windowNoTitle">true</item> </style> <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 背景颜色 --> <item android:drawable="@color/green" /> <item> <!-- 图片 --> <bitmap android:gravity="center" android:src="@drawable/icon_welcome" /> </item> </layer-list>