解决Android应用启动时的黑白屏问题

公司做的一款APP,在启动的时候,会先白屏一会再显示启动页的内容,给人的体验很不好。所以,决定查找一下白屏的原因优化一下视觉体验。

在度娘上搜索这个问题,确实很多同行都遇到了,并且都根据自己的理解给出了自己的解决之道。我经过实验之后,也确实解决了问题,在这里就总结一下,免得过几天就不认识了(这里确实想提一下,我看过几本技术书,也看了一些Android Framework源代码、技术博客、小例子。但是,由于自己急功近利,懒于实践,没有及时记录总结,刚过不久想用时却忘记了,血的教训啊)

学习的几个链接:

白屏原因

对于一款APP,我们都会对整个应用设置一个主题(AndroidManifest.xml文件中标签application设置属性android:theme=”@style/AppTheme”),而这个主题呢,一般都是继承自系统的一个已有主题(例如:Theme.AppCompat.Light.NoActionBar),而启动窗口根据这个主题设置样式的时候,会根据主题中的属性android:windowBackground设置窗口的背景颜色。

好了,总的过程就是,第一显示主题的背景色即白色,第二程序运行完setContentView()方法之后把启动页视图添加到DecorView上,第三通过一些操作显示到屏幕上之后,白屏消失,显示我们的启动页视图。

解决方案一

简单粗暴,为启动页专一设置一个主题,将这个主题的android:windowIsTranslucent属性设置为true即可。
这样就可以了吗?严格来说,不可以,因为这样就是将主题的默认背景设置为透明的了,所以看到的还是Home页,在显示透明之后才显示启动页,大家会觉得点击APP的图标之后过了一段时间才显示启动页视图。

缺点,方应迟钝。不过,确实达到了不显示白屏的目的。

解决方案二

对于有些应用,启动页仅仅是一张图片,这也很容易办。同样为启动页专一设置一个新的主题,设置主题的android:windowBackground属性为启动页背景图即可。

<item name="android:windowBackground">@mipmap/launcher</item>

为了减小APK的大小,可以尝试使用.9图。

优点:避免了反应迟钝的问题。

解决方案三

可以使用layer-list制作一张图片launcher_layer.xml,将其设置为启动页专一主题的背景,并将其设置为启动页布局的背景。
优点:对于启动页布局简单,可以使用layer-list实现的采用这种方式比较好,启动迅速,主题背景和启动页布局背景相同体验流畅。

总结

大家选择方案时,可以根据自己启动页的布局特点选择合适的。为了美观,大家可以把启动页设置为全屏。

赞助

本文由老司机学院动脑学院特约赞助。

做一家受人尊敬的企业,做一位令人尊敬的老师

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值