Android应用启动时白色闪屏原因及解决办法
白色闪屏现象:
如果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));}}
}
原因:
Activity
在onResyme()
完成后才显示布局,在这期间,由于应用有背景颜色(背景图片),所以会首先显示应用的背景。
我们查看下源码:
新创建的应用默认主题为@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应用启动时白色闪屏原因及解决办法相关推荐
- 海信电视黑屏出现android,海信智能电视开机黑屏原因和解决办法
电视时间用长了,总会出现各种故障,其中比较常见的就是开机黑屏,那这到底是由于什么原因造成的呢?今天,小编将和大家一起来看一下海信电视开机黑屏的原因及其解决方法. 海信智能电视开机黑屏原因汇总: 一.总 ...
- 导航栏加载时可能出现闪的原因以及解决办法
元素闪烁很丑,难解决. 修改 Class 而不是 Style 我在不久前做过一个导航栏,要求其滚动到屏幕顶端后固定.很常见.开始的时候没问题,很快就可以搞定. nav {position: absol ...
- linux下hg无法运行_Linux 无法启动常见的几种原因及解决办法
导致 Linux 无法启动的原因有很多,下面良许小编就将常见的几种原因及解决办法进行详述,希望对大家有所帮助. 文件系统配置不当,如 /etc/inittab文件./etc/fstab 文件等配置错误 ...
- 惠普计算机开机半花屏,hp笔记本花屏原因及解决办法【图文教程】
电脑花屏是电脑故障中最为常见的一种故障.一般来说,电脑花屏跟显卡有着莫大的关系,因为显卡与我们电脑的图片成像系统有关.大多数以为的电脑花屏就仅仅是出现斑点而已,其实不然,电脑花屏有很多种表现形式,包括 ...
- 御龙在天手游怎么不显示服务器了,御龙在天手游进不去怎么办 闪退原因及解决办法...
御龙在天手游进不去怎么办?闪退原因及解决办法.御龙在天手游今天迎来了安卓平台的不删档不限号测试(游戏出现打不开的问题,下面就让小编为大家介绍一下出现这类问题的原因及解决办法吧! 1.服务器问题 游戏早 ...
- phpstudy mysql端口_PHP集成环境phpstudy启动时80或者3306端口占用解决办法
<PHP集成环境phpstudy启动时80或者3306端口占用解决办法>要点: 本文介绍了PHP集成环境phpstudy启动时80或者3306端口占用解决办法,希望对您有用.如果有疑问,可 ...
- 为什么显示芒果tv服务器异常怎么办,《芒果TV》无法投屏原因及解决办法
很多使用芒果TV的小伙伴,在看视频的时候,都想将芒果TV投屏到电视上观看.但是在进行投屏操作的过程中,一直会遇到问题,导致无法成功完成投屏.芒果TV为什么不能投屏?这是怎么回事呢?下面我们一起来看看芒 ...
- 闪烁之光为什么闪退_《光遇》闪退原因及解决办法介绍
<光遇>游戏闪退怎么解决?很多小伙伴表示最近打开游戏经常会出现闪退的情况,而且还很频繁,基本上经常出现闪退,那么闪退的原因是什么?怎么解决游戏的闪退呢?接下来小编为大家带来<光遇&g ...
- virtualbox安装ubuntu时需要全屏显示的解决办法
在virtualbox安装好ubuntu后,显示的界面是800*600的分辨率,下面给出需要全屏显示的解决办法: 1. 启动Ubuntu后,安装Virtualbox增强功能(在虚拟机的"设备 ...
最新文章
- 解析EXCEL CSV格式文件的方法
- 安装 VMware Tools 实现窗口 自适应 及 主机与虚拟机之间复制粘贴
- SAP UI5 事件通知技术的实现之Eventbus.subscribe
- python可以开发驱动吗_Python机器学习实践:测试驱动的开发方法
- freenas安装mysql_FreeNAS Jail中安装MySQL数据库服务器
- mac切换网卡|IP
- Python爬取的数据存为json文件,并读取
- 面包板如何接线电源 图解_消防应急照明EPS应急电源供电系统如何设计?附高清接线参考图...
- 2019年小白学习web前端路线图及学习攻略
- 高德地图SDK未设置隐私合规而导致地图不显示的问题
- 浙江省测绘与地理信息局异地备份和容灾项目
- 计算机双语论文,计算机双语教学初探论文
- 收藏的有用博客及源码地址
- win10关闭快速启动_win10系统快速启动的坏处
- 常见英语面试问答_40个常见的工作面试问答
- 如何使用分布是缓存Hazelcast
- 海洋污染全球告急:AI 可能是最后的防线
- 查看虚拟机里的Centos7的IP
- CSDN首发丨TBSchedule应用实战手册
- ASP.NET MVC图片文件上传与下载
热门文章
- 公司封了MSN怎么办(Web版MSN解决方案)
- 【Oracle 数据库】奶妈式教程 day12 字符函数
- LeetCode 二叉树构造 TreeNode 工具类
- MD5碰撞后时代,MD5加密真的安全吗
- 请求方法 GET 和 POST 的区别
- xshell连接linux的命令,Xshell远程连接Linux服务器xshelllinux命令大全
- 使用mybatisplus的insert方法报错:org.apache.ibatis.reflection.ReflectionException: Could not set property
- mybatis-plus自动填充插入时间后有8小时时差
- 记一次生成验证码字母花体问题
- 怎么取消计算机add2,计算器上的F,4,2,0,ADD2是什么意思