android启动作黑屏,Android启动页黑屏的解决方案

通常APP启动都会显示一个白屏或者黑屏的页面,再跳到欢迎页,这样子的体验效果很差。这究竟是怎么回事呢?要如何解决它呢?今天咱们来分析下它产生的缘由,以及解决方案。html

一、产生缘由java

当系统启动一个APP时,zygote进程首先会建立一个进程去执行这个APP,可是建立进程是须要时间的,用户点击后觉得没响应会再次点击,这样的体验效果不佳。为了解决这种迷之尴尬,Android系统会根据你的manifest中设置的主体颜色来显示一个白屏或者黑屏,它的正式称呼是Preview window,即预览窗口。android

二、解决方案post

这个问题的本质是,虽然代码还没执行,可是配置文件被提早读取了,因此咱们主要针对mainfest来解决这个问题,更准确的说,是主题配置文件。优化

(1)修改启动的Activity的主题动画

具体方法以下: style.xlmcode

@drawable/splash_icon

一样将主题设置到启动的Activity的主题中,windowBackground就是即将展现的preview window。其中splash_icon能够是一整张图片,网上不少小伙伴也都是这么作的。

其实它也能够是一个能解析出图片资源的XML文件,好像只有layer-list这种能作获得,由于它可以将多个drawable叠加起来展现。

这样子就能够解决黑白屏的问题了。

(2)进一步优化:添加动画

通常咱们的APP启动后都会有欢迎页,而后再进入主页。按照上面的作法,会先显示图片,接着显示欢迎页,而后到主页,由图片到欢迎页的跳转过渡很突兀,强迫症分分钟不能忍呀~

因此咱们进行进一步的优化:添加动画。

实际上Preview window只能是静态图,展现不了动画。咱们的作法是在跳到欢迎页中实现动画,就是在Preview widow跳转到欢迎页时,先显示一个跟Preview window页面如出一辙的页面,让人以为好像没有切换似的,而后再慢慢切换到欢迎页。

这里有个小问题要注意下:咱们给Preview window设置的背景图若是不做处理,是会一直存在在内存中的,因此在进入欢迎页的onCreate中将背景图还原:

getWindow().setBackgroundDrawableResource(android.R.color.white);

到此启动页黑白屏的问题能够交货咯~htm