android进出动画有白屏,解决白屏、黑屏问题,优化欢迎页显示
文章目录前言你的应用是否出现过,启动后白屏、黑屏、响应慢等问题?想不想像微信、QQ那样秒启动?想学吗?我教你呀,哈哈哈哈哈一、为什么会出现黑屏、白屏?这一切还得从android进程的起源说起:据说,在很久很久以前… …简单来说,在android系统中,有一个女娲级的进程叫zygote,它是Android系统上所有应用进程的父进程,所有应用运行的进程,都是由zygote一手创建起来的。但是,进程也不
文章目录
前言
你的应用是否出现过,启动后白屏、黑屏、响应慢等问题?
想不想像微信、QQ那样秒启动?
想学吗?
我教你呀,哈哈哈哈哈
一、为什么会出现黑屏、白屏?
这一切还得从android进程的起源说起:据说,在很久很久以前… …
简单来说,在android系统中,有一个女娲级的进程叫zygote,它是Android系统上所有应用进程的父进程,所有应用运行的进程,都是由zygote一手创建起来的。
但是,进程也不是一天建成的,那都是需要Time的!当用户马大爷点击了应用启动图标,zygote就会开始日夜赶工的创建进程,但是就是这么点间隙,如果android系统不给点什么反映,马大爷就会以为自己没点到,这会严重挫败马大爷的自信心呐,于是,android系统必须给个反映:
系统会根据你的manifest文件设置的主题颜色的不同来展示一个白屏或者黑屏。这个黑(白)屏的界面,就是PreviewWindow,即预览窗口。
二、怎么解决?
既然女娲创建进程需要时间,系统也给女娲了时间,只不过,给的方式有点丑陋,那我们能不能美化下呢?也就是那个PreviewWindow的展示界面能不能好看些呢?或者说,能不能换成自定义的页面呢?
上帝既然为你创造了双脚,你必定可以买到合适的鞋!
直接在AndroidManifest.xml中的启动类添加Theme
@drawable/splash
true
false
1.图片变形怎么办?
2.出现留白怎么办?
3.跳转动画如何去掉?
哪儿那么多为什么,一次性解决所有问题:
很多博客说,使用.9啊。亲测,无效。(可能我测的姿势不对)
4.解决办法
使用layer-list,才是解决问题的关键。
比如下面这种情况的闪屏页面,使用layer-list是最优解:
android:windowBackground 设置时不使用原图,而是使用layer-list
同时,将闪屏页界面元素进行合理拆分,如下
theme:
@drawable/layer_splash
true
false
@style/Animation_No
true
layer_splash.xml: 顶部距离,底部距离自己把控
android:opacity="opaque">
android:gravity="fill"
android:src="@mipmap/splash_bg" />
android:gravity="top|center_horizontal"
android:src="@drawable/test_splash_title" />
android:gravity="top|center_horizontal"
android:src="@drawable/test_splash_center" />
android:gravity="bottom|center_horizontal"
android:src="@drawable/test_splash_logo" />
Animation_No:
@null
@null
@null
@null
@null
@null
@null
@null
@null
@null
@null
@null
具体示例如下图:
splash_bg是渐变背景,由于UI设计了渐变色,只能也使用图片了(可以用.9)
test_splash_title是顶部的标题栏(应用名称,别惊讶,总有老板会把名字放这里的)
test_splash_center是中间的图片,注意,图片一定是不带背景颜色的,这样效果好。
test_splash_logo是底部的小太阳
三、看看别人家的应用
1.Bilibli
B站的手机客户端,做的还是不错哒。
仔细看了下他家APP启动,猜测逻辑应该是这样,theme中的windowBackground应该是只设置了底部的logo,并使用了纯白背景,而后,启动页的真实activity的layout文件,应该是底部logo,中间添加了二次元图片。所以在启动哔哩哔哩时,会先显示底部logo纯白界面,后显示二次元+底部logo的界面。
但是 但是 但是,这种做的好了就是B站的那种效果,做的不好,就是下面这种效果了!!
睁大眼看清楚,丁香妈妈那四个字,是不是有一个下移的效果。
这可不是开发专门做的特效,这应该是个bug,哈哈哈
而且,我发现滴滴,竟然也有这种问题!!!
这种明显的问题,测试肯定会问你的,能不能把这个特效去掉?!
当然可以的啦!
关键在于,theme中的layer-list的布局与启动页activity中的布局保持一致的同时,而且,要保证启动页也是全屏展示,即theme中也带有windowNoTitle和windowActionBar的属性
true
false
如果你没带这俩属性也显示正常,那么敲敲的告诉你,你把你的手机虚拟按键隐藏了你再看看试试!!!
总结
虽然说,解决了问题,但是说到底其实是个障眼法而已,三脚猫功夫。真正应该做的是优化启动逻辑,不能有了障眼法,就不去优化启动逻辑了。毕竟用户真正想要的是以最快的速度进到主应用、主界面,如果启动让用户等待太长时间,那这个应用估计很快就gg了。
自己铲平经理从远方喊话:
你看看人家支付宝,多大体量的APP,人家那启动时间,那基本上就来不及我反应,人家就打开了!再看看咱们自己的应用,搁这儿没睡醒呢还!!!!
不说了,不说了,赶紧跑路了。。。。。。
标签:layer,启动,欢迎,splash,logo,白屏,null,黑屏
来源: https://blog.csdn.net/sinat_26710701/article/details/114697320
更多推荐
所有评论(0)