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
Android开发——解析App启动页(Splash)黑/白闪屏现象相关推荐
- Android开发----实现应用启动页
Android开发----实现应用启动页 写在前面: 本次实现参考糖心荷包蛋小姐姐的文章进行操作,小姐姐写的非常清楚,点击查看原文哦! 我再做个笔记. 流程步骤: Android开发----实现应用启 ...
- 浅识Flutter Android studio 设置APP启动页
Flutter Android studio 设置APP名启动页 Android设置APP启动页 ios设置APP启动页 APP的应用一打开,启动应用程序后,进入主功能界面前会有一张图片或一段动画效果 ...
- Android开发固定app图标大小,Android和IOS开发图标、启动页尺寸
最近项目在做android和ios的项目,设计师让我给出图标的尺寸,于是查了一下尺寸. 一.开发中的实际情况: 第一步:产品经理和UI设计师制定好UI规范,然后开始做图标做颜色做尺寸等一系列和APP界 ...
- android开发 时间倒计时的启动页,App启动页倒计时功能
示例代码采用 RxJava + RxLifecycle + Data-Binding 模式编写 示例图: 话不多说,实现方式如下: 1.导入依赖库 ① RxJava: Reactive Extensi ...
- android dialog 隐藏状态栏_Flutter-最近搞了个项目-启动页Splash,Navigator.pop无法关闭Dialog...
上一篇做了个总体简单记录总结 MonkeyLei:Flutter-最近搞了个项目(常用控件,第三方基本库)-底部导航,登录,启动画面,webview等 . 完事了后以为没什么事情,然后点击登录会显示加 ...
- android启动页广告图,一张图搞定APP启动页广告
之前我们产品里的启动页比较简单,就是背景色加上我们的logo.slogan等,这种形式适配起来比较容易,把元素切出来交给开发写出来就行.最近由于运营的需求,我们需要在APP启动页展示广告,广告图更新频 ...
- 解决 Android APP 启动页白屏问题及如何实现全屏显示
目录 一.白屏原因分析 二.解决白屏方案 方案一.提供 .png 背景图 方案二.使用 Layout-list 制作背景 1. 制作替代白屏的背景:bg_splash.xml 2. 将 bg_spl ...
- android打开app白色页面,完美解决Android App启动页有白屏闪过的问题
应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...
- 产品策划三:App启动页的策划方案
App启动页是指app在启东时需要加载必要的运行环境和配置,在这个过程中提示用户等待的一个过渡页面. 在产品经理眼里启动页是app给予用户重要的第一印象:也是App最重要的黄金页面之一,所有用户100 ...
最新文章
- Linux常用的基本命令01
- 985博导:如果符合这几条,你可能不适合读博!
- JavaScript学习(八十七)—流程控制语句的总结,超级详细!!!
- 今天完成了一个真正意义上完整的gridview数据表操作
- Mobileye单目测距
- Knockoutjs开发指南
- html flex上下居中,CSS3 Flex实现元素的水平居中和垂直居中
- android apk u盘升级_android升级安装包--包解析错误
- [源码阅读]解析Anime(JS动画库)核心(2)
- FPGA驱动VGA显示
- WordPress插件曝出零日漏洞,已被积极在野利用
- 【已解决】python 使用xlrd,xlwt 修改execl单元格的背景色
- 一位美国教授给研究生的怎样记读书笔记的建议(中文总结)
- 一种获取公网ip地址并发送邮件至指定邮箱的实现方法
- 物联网信号测试软件,物联网开关量信号采集 NPN转WIFI 检测计数器
- 【CSS】尺寸和边框、盒子模型、外边距_02
- 扫描电子显微镜基本构造
- 彻底解决不要脸的360更改浏览器主页【转载】
- three.js和D3.js
- 1496_关于约翰惠勒与费曼