您的位置:首页 > 移动开发

AndroidApp启动优化篇

2016-01-27 12:21 543 查看
谈及App的启动,首先多数人想到的是现在普遍的广告页启动。可以看看像QQ,天猫,京东,微信等等,几乎都是如此,也是潮流。

既然是潮流,那我们也不能落下,紧跟潮流,做个这样的App启动效果,结果发现,不尽人意,每次都会先卡顿一下,然后出现黑屏或白屏的一闪而过,而当我们打开微信这样的App,却不会有这样的操蛋行为。为啥呢?百思不得其解。。(废话一篇,进入主题)

上面我们用了100字左右的内容来引出今天的主题:如何让App 在启动时能快速显示!

首先,App会出现这样的操蛋行为,主要是跟Activity加载布局显示的时机有关。大家平时都认为,onCreate是Activity的第一个回调方法,启动就会创建,然后回调。肯定是在这个方法里面设置视图的显示哇。没错!但是稍微了解点底层的哥们都知道,Activity启动后首先是初始化过程依次是Window->DecoreView->ViewGroup。而我们在onCreate中setContentView设置的布局,其实是DecoreView的子布局,也就是说在Window显示的时候,我们的布局还没有加载进来。所以会出现上面的结果!

好了,明白了原因,那么下面我们说说该如何解决这种问题,让我们的App也牛逼一回!

OK,我总结为二种方式,下面一一道来:

(1)在style.xml自定义样式,声明android:windowIsTranslucent

这种方式很容易理解,直接设置window的背景为透明就可以解决上面的问题!不多说,一试便知。

(2)在style.xml自定义样式,声明android:windowBackground

这种方式又可以分为两种情况:

(1)直接拿图片来设为背景(2)使用layer-list来设置bitmap,用layer-list来填充背景。

两种方式都可以解决上述问题,区别就在于:使用layer-list更能节省内存,也是推荐的方式。

依据上面的方式设置完成后,将该style作为Activity的Theme。就轻松搞定啦!下面贴上核心代码:
















OK,如有疑问,欢迎骚扰哦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: