Android开发——解析App启动页(Splash)黑/白闪屏现象

前言

我在开发App的时候,出现App在启动会出现短暂的黑/白闪屏现象。这样现象对用户的体验感是会产生不好的影响,于是我就研究这个现象的起因和解决办法。不负有心人,我在翻了很多博客,踩完坑之后找到起因和解决办法。

App启动页(Splash)黑/白闪屏现象的起因

1.第一种说法

当我们启动一个App的时候,系统会检查是否存在这样一个进程。如果这个进程不存在,就是冷启动。系统和App本身有很多工作需要处理,系统的服务会先检查startActivity中的intent的信息,然后在去创建进程,最后才是执行启动Acitivy的操作。而我们提到的App启动页(Splash)黑/白闪屏现象就是这样产生的。

2.第二种说法

其实启动页(Splash)还需要在其他地方进行默认配置

3.第三种说法

启动页的Activity中onCreate()-->setContentView()这个并不是发生在,windows绘制的第一步,系统会在执行这个步骤之前,先绘制窗体,这时候布局资源还没加载,于是就使用默认背景色。

//这种亮色系,造成白色闪屏
 <style name="ThemeSplash" parent="Theme.AppCompat.Light">
//这种暗色系主题,造成了黑色闪屏
<style name="ThemeSplash" parent="ThemeOverlay.AppCompat.Dark">

我的看法

系统在绘制页面加载布局之前,首先会初始化窗口(Window),而在进行这一步操作时,系统会根据我们设置的Theme来指定它的Theme 主题颜色,Window 布局的顶层时DecorView,StartingWindow显示一个空DecorView,我们在Style中的设置就决定了显示的是白屏还是黑屏(调用我们默认设置的App主题),我们需要给启动页设置一个自定义主题就可以了。默认主题是下图中的主题
这里写图片描述

解决办法:设置启动页(Splash)的Theme

设置启动页(Splash)的Theme分为两步,启动页设置了一个背景图片,这样就不会显示白色或着黑色了。这样就避免了黑白屏的问题,请看下面举例

(1)在AndroidManifest文件中设置

<activity android:name=".ui.activity.SplashActivity"
     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>

(2)在style文件中定义

<!--设置启动页的主题,防止黑屏(闪黑)或者白屏(闪白)-->
    <style name="SplashTheme" parent="AppTheme">
        <!--去掉windowTitle-->
        <item name="windowNoTitle">true</item>
        <!--设置全屏状态-->
        <item name="android:windowFullscreen">true</item>
        <!--设置背景图片-->
        <item name="android:windowBackground">@drawable/qdy</item>
        <!--设置内容覆盖-->
        <item name="android:windowContentOverlay">@null</item>
    </style>

总结

这是我对App启动页(Splash)黑/白闪屏现象的解析。我有到网上去翻看资料,以下几篇博客对我的解析有办法,Android开发的同学也可以去看一下,献博文地址
https://blog.csdn.net/kenway090704/article/details/79041715
https://blog.csdn.net/u010074743/article/details/76461662
https://blog.csdn.net/zivensonice/article/details/51691136

猜你喜欢

转载自blog.csdn.net/chengxu_kuangrexintu/article/details/80954106
今日推荐