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。就轻松搞定啦!下面贴上核心代码:
![](http://img.blog.csdn.net/20160127121931958?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160127122005208?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160127122015085?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
OK,如有疑问,欢迎骚扰哦!
既然是潮流,那我们也不能落下,紧跟潮流,做个这样的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,如有疑问,欢迎骚扰哦!
相关文章推荐
- 国外推广必备:国际知名APP网站&APP论坛列表
- Swift_基本数据类型
- iOS开发-修改TableViewCell的Delete按钮
- Android ListView 常见问题与使用总结
- MockObject
- Android之SurfaceView的使用
- Android两种常见错误-ANR和FC(Force close)
- Android签名机制之---签名过程详解
- Android Design Support Library介绍之:环境搭建
- iOS统计数组相同元素的个数(使用数组筛选计算)
- [iOS]修改开发者中心Bundle Identifier的一些配置
- android获取设备mac地址
- iOS 视图左右晃动动画
- 解读 node.js express 生成的app.js
- Android录制mp3格式
- Android java 中如何优雅的结束线程
- Android 选取图片、手机拍照以及保存图片到本地、读取图片
- iphone ios 如何使用gcd,block
- iOS中的协议与委托
- Unity3D内存管理——对象池