Android进入欢迎界面前显示黑乎乎的或者白白的一小段
首次点开应用是这样子的:
出现黑乎乎的一片,用户体验可是极差,所以我们要誓力解决,你回头看看手机其他的应用,比如QQ,他们就没有这个黑乎乎,白兮兮的这么一片,那他们是怎么做到的呢?
原理
其实是有一种东西我们之前是不知道的 (我看别的书有所耳闻这写概念名词) ,我们来探一下他们的原理.
1.冷启动:
后台没有该应用的进程,这次启动应用系统创建一个全新的进程给应用.
特点:
全新创建进程需要时间,并且按着一定的顺序执行,系统在创建和初始化application之后才到自定义activity类的创建和初始化,中间有一段时间才到显示布局,可视化的布局.
2.热启动
那就是相反咯,启动该应用前后台已经存在一个该应用的进程咯.(通俗点)
特点:
已存在了运行应用的进程,那么就不会右创建和初始化application这个步骤了,转而直接创建和初始化自定义activity类.
有人可能会问,为啥不走application啦,你想啊,Android入门的是后是不是说过 '一个应用,application只初始化一次’
解决方法
其实那个黑乎乎的界面就是application默认的背景色,不同的布局类型这个背景色有些不同,有的黑,有的白
看AndroidMainfest.xml文件android:theme="@style/AppTheme"
这个就是罪魁祸首,那么我们要改的代码就是在此代码上ctrl+鼠标点击进入另一个文件,在该文件添加代码
<item name="android:windowBackground">@drawable/launch_image</item>
修改背景即可
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/launch_image</item>
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fengxing.primer.androidframe">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--壁纸权限-->
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"></activity>
<activity android:name=".okclient.OkhttpClientActivity"></activity>
<activity android:name=".activity.WallpageActivity"></activity>
<activity android:name=".activity.LaunchActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>