您的位置:首页 > 移动开发

解决Android APP启动出现白屏或黑屏的问题

2017-10-27 17:29 666 查看
1. 前言



Android开发者都会有这样的体会吧!自己开发的APP,在启动APP的时候,会出现一段时间白屏或黑屏(这跟手机系统相关,不过大多数都是显示白屏的),然后才会显示APP的界面。其实这段时间的出现,是APP在启动时,需要初始化一些数据,然后才会去加载主活动(第一个Activity)造成的。那么我怎么解决呢?

2. 解决方案

第一步:在res/values/styles.xml文件中,自定义一个主题CustomTheme,继承Application的主题AppTheme,然后重写windowBackground属性,设置为一张图片或者一种颜色。这里以设置一张图片为例:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

<!-- App的第一个Activity的自定义主题 -->
<style name="CustomeTheme" parent="AppTheme">
<item name="android:windowBackground">@drawable/bg_welcome</item>
</style>

</resources>


第二步:将AndroidManifest.xml中的主活动的主题修改为CustomTheme。然后就大功告成了。

<application
android:name=".MyApplication"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:allowBackup">
<activity
android:name=".main.WelcomeActivity"
android:theme="@style/CustomTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

3. 补充

时间:2017.11.24

今天测试的时候,突然发现到一个问题。如果我们将主活动(专门做成一个欢迎界面,该欢迎界面只有一张图片)的布局的background属性也设置成@drawable/bg_welcome,启动APP后,能够发现欢迎界面会有一个明显的下坠感。经过不断的测试,终于发现了问题所在:

① APP先显示主题的默认背景图(bg_welcome,全屏,其高度包括了通知栏的高度);

② 然后才显示主活动的背景图(bg_welcome,全屏,其高度不包括通知栏的高度);

所以,造成下坠感,就是因为这个通知栏的高度。

那要怎么解决呢?其实很简单,如果主活动只有一张图片的话,我们完全可以不设置background,而是只设置主题的android:windowBackground,这样也完全可以实现欢迎界面的效果。但是,如果主活动是通过使用各种UI控件来打造欢迎界面的,那么我们可以使用截屏的形式,把主活动的欢迎界面截下来,然后让美工把通知栏去掉(这种方法确实有点low,不过我也没想到其他办法解决了,如果是在布局文件中里将UI控件上移一点,这个高度也不好控制,所以也挺麻烦的)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 启动 白屏 黑屏