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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio是一款专门用于开发Android应用程序的集成开发环境(IDE)。启动页是Android应用程序在启动时显示的第一个界面,通常用于展示应用程序的logo或者欢迎信息。下面是使用Android Studio开发App启动页的步骤: 1. 创建一个新的Android项目:在Android Studio中点击"File" -> "New" -> "New Project",然后按照向导填写项目名称、包名等信息。 2. 在res目录下创建一个新的布局文件:在项目的res目录下找到"layout"文件夹,右键点击该文件夹,选择"New" -> "Layout resource file"。填写布局文件的名称,例如"activity_splash.xml",然后点击"OK"。 3. 在布局文件中设计启动页的界面:使用Android Studio提供的可视化布局编辑器,在activity_splash.xml文件中设计启动页的界面,可以添加图片、文字等元素。 4. 创建一个新的Activity类:在项目的java目录下找到你的包名,右键点击该包名,选择"New" -> "Java Class"。填写类名,例如"SplashActivity",然后点击"OK"。 5. 在SplashActivity中设置启动页的逻辑:打开SplashActivity.java文件,在onCreate方法中设置启动页的逻辑,例如延时一段时间后跳转到主界面。 6. 在AndroidManifest.xml中设置启动页为应用程序的入口:打开AndroidManifest.xml文件,在<application>标签内添加以下代码: ``` <activity android:name=".SplashActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 以上是使用Android Studio开发App启动页的基本步骤。你可以根据自己的需求进行界面设计和逻辑实现。如果有更具体的问题,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值