白色闪屏现象:

如果OnCreate()onStart()onResume()中操作太多,耗时较久。那么就会在主界面显示出来之前出现白色闪屏。为了更清晰的看出白色闪屏,这里在代码中执行50000次打印Log操作。代码及效果如下所示:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//这里执行了50000次打印log,可自行修改for (int i = 0; i<50000;i++){Log.d(TAG, "onCreate: "+String.valueOf(i));}}
}

原因:

ActivityonResyme()完成后才显示布局,在这期间,由于应用有背景颜色(背景图片),所以会首先显示应用的背景。

我们查看下源码:
新创建的应用默认主题为@style/AppTheme,一直查看它的父类会发现Platform.AppCompat.Light中定义了一个android:windowBackground的属性。

<item name="android:windowBackground">@color/background_material_light</item>

继续往下看

<color name="background_material_light">@color/material_grey_50</color>
它的值为material_grey_50

<color name="material_grey_50">#fffafafa</color>值为白色。

也就是说,应用的背景为白色。显而易见,罪魁祸首就是它。。。

解决:

查找到了原因,我们就可以针对的去解决它。这里找到了三种解决的办法(如果哪位大神有更好的办法请分享出来,非常感谢~)。

1 . 把应用默认主题设置为透明主题。例如:

android:theme="@android:style/Theme.Translucent.NoTitleBar
注意:这里需要修改mainActivity继承Activity,否则会报错。

效果图如下所示:

可能大家看不出什么变化,认真观察你会发现,手机上多了白色闪屏hellow World(中间),这是因为我们设置了透明主题,而且activity没有背景色,所以只显示了两个view组件。但是重点是,没有白色闪屏了!!!

2 . 修改当前主题中的属性,在属性中添加应用背景透明。
<item name="android:windowIsTranslucent">true</item>

效果图如下:

上面两种方式都有个小问题不知道大家发现没有,就是点击APP图标后很久才能进入activity。也就是说,用户体验仍然不好,这是因为背景透明之后显示的仍然是手机桌面,那我们能不能用颜色或者图片代替它呢?当然可以。请看第三种方法。

3 . 修改当前主题中的属性,在属性中添加背景图片。
<item name="android:windowBackground">@mipmap/logo</item>

效果图如下:

这种情况下,所有activity中的背景也会变成该图片,此时为Activity设置自己的背景图片即可。

总结:

Android应用启动时白色闪屏最好的解决办法是为应用设置背景图片(logo作为欢迎页),并为各个activity设置相应的背景。

Android应用启动时白色闪屏原因及解决办法相关推荐

  1. 海信电视黑屏出现android,海信智能电视开机黑屏原因和解决办法

    电视时间用长了,总会出现各种故障,其中比较常见的就是开机黑屏,那这到底是由于什么原因造成的呢?今天,小编将和大家一起来看一下海信电视开机黑屏的原因及其解决方法. 海信智能电视开机黑屏原因汇总: 一.总 ...

  2. 导航栏加载时可能出现闪的原因以及解决办法

    元素闪烁很丑,难解决. 修改 Class 而不是 Style 我在不久前做过一个导航栏,要求其滚动到屏幕顶端后固定.很常见.开始的时候没问题,很快就可以搞定. nav {position: absol ...

  3. linux下hg无法运行_Linux 无法启动常见的几种原因及解决办法

    导致 Linux 无法启动的原因有很多,下面良许小编就将常见的几种原因及解决办法进行详述,希望对大家有所帮助. 文件系统配置不当,如 /etc/inittab文件./etc/fstab 文件等配置错误 ...

  4. 惠普计算机开机半花屏,hp笔记本花屏原因及解决办法【图文教程】

    电脑花屏是电脑故障中最为常见的一种故障.一般来说,电脑花屏跟显卡有着莫大的关系,因为显卡与我们电脑的图片成像系统有关.大多数以为的电脑花屏就仅仅是出现斑点而已,其实不然,电脑花屏有很多种表现形式,包括 ...

  5. 御龙在天手游怎么不显示服务器了,御龙在天手游进不去怎么办 闪退原因及解决办法...

    御龙在天手游进不去怎么办?闪退原因及解决办法.御龙在天手游今天迎来了安卓平台的不删档不限号测试(游戏出现打不开的问题,下面就让小编为大家介绍一下出现这类问题的原因及解决办法吧! 1.服务器问题 游戏早 ...

  6. phpstudy mysql端口_PHP集成环境phpstudy启动时80或者3306端口占用解决办法

    <PHP集成环境phpstudy启动时80或者3306端口占用解决办法>要点: 本文介绍了PHP集成环境phpstudy启动时80或者3306端口占用解决办法,希望对您有用.如果有疑问,可 ...

  7. 为什么显示芒果tv服务器异常怎么办,《芒果TV》无法投屏原因及解决办法

    很多使用芒果TV的小伙伴,在看视频的时候,都想将芒果TV投屏到电视上观看.但是在进行投屏操作的过程中,一直会遇到问题,导致无法成功完成投屏.芒果TV为什么不能投屏?这是怎么回事呢?下面我们一起来看看芒 ...

  8. 闪烁之光为什么闪退_《光遇》闪退原因及解决办法介绍

    <光遇>游戏闪退怎么解决?很多小伙伴表示最近打开游戏经常会出现闪退的情况,而且还很频繁,基本上经常出现闪退,那么闪退的原因是什么?怎么解决游戏的闪退呢?接下来小编为大家带来<光遇&g ...

  9. virtualbox安装ubuntu时需要全屏显示的解决办法

    在virtualbox安装好ubuntu后,显示的界面是800*600的分辨率,下面给出需要全屏显示的解决办法: 1. 启动Ubuntu后,安装Virtualbox增强功能(在虚拟机的"设备 ...

最新文章

  1. 解析EXCEL CSV格式文件的方法
  2. 安装 VMware Tools 实现窗口 自适应 及 主机与虚拟机之间复制粘贴
  3. SAP UI5 事件通知技术的实现之Eventbus.subscribe
  4. python可以开发驱动吗_Python机器学习实践:测试驱动的开发方法
  5. freenas安装mysql_FreeNAS Jail中安装MySQL数据库服务器
  6. mac切换网卡|IP
  7. Python爬取的数据存为json文件,并读取
  8. 面包板如何接线电源 图解_消防应急照明EPS应急电源供电系统如何设计?附高清接线参考图...
  9. 2019年小白学习web前端路线图及学习攻略
  10. 高德地图SDK未设置隐私合规而导致地图不显示的问题
  11. 浙江省测绘与地理信息局异地备份和容灾项目
  12. 计算机双语论文,计算机双语教学初探论文
  13. 收藏的有用博客及源码地址
  14. win10关闭快速启动_win10系统快速启动的坏处
  15. 常见英语面试问答_40个常见的工作面试问答
  16. 如何使用分布是缓存Hazelcast
  17. 海洋污染全球告急:AI 可能是最后的防线
  18. 查看虚拟机里的Centos7的IP
  19. CSDN首发丨TBSchedule应用实战手册
  20. ASP.NET MVC图片文件上传与下载

热门文章

  1. 公司封了MSN怎么办(Web版MSN解决方案)
  2. 【Oracle 数据库】奶妈式教程 day12 字符函数
  3. LeetCode 二叉树构造 TreeNode 工具类
  4. MD5碰撞后时代,MD5加密真的安全吗
  5. 请求方法 GET 和 POST 的区别
  6. xshell连接linux的命令,Xshell远程连接Linux服务器xshelllinux命令大全
  7. 使用mybatisplus的insert方法报错:org.apache.ibatis.reflection.ReflectionException: Could not set property
  8. mybatis-plus自动填充插入时间后有8小时时差
  9. 记一次生成验证码字母花体问题
  10. 怎么取消计算机add2,计算器上的F,4,2,0,ADD2是什么意思