Android Launcher分析
来源:互联网 发布:c语言游戏开发教程 编辑:程序博客网 时间:2024/06/11 18:57
http://blog.csdn.net/xyz_lmn/article/details/17613763
前面介绍过使用HierarchyViewer和Android lint来优化我们的程序,这一篇算是总结性的,借助一个小例子来说用怎么优化应用布局。这个例子是android官网给出的,作者也当一把翻译。
多数开发者可能会这样认为,使用基本的布局结构会产生高效的布局性能,其实这个想法是不完全正确的。我们每一个添加到应用的控件和布局,都需要初始化、布局、绘制,这些多是需要时间降低显示速度的。另外,嵌套多个使用layout_weight属性的LinearLayout实例会花费更大的代价,因为每一个子布局都要测量两次。如果这种布局使用在ListView或者GridView中,渲染时会更耗时。
下面,我们根据一个布局示例使用HierarchyViewer和Android lint来检测优化布局结构。
使用HierchyViewer
HierchyViewer需要你选择一个已连接的设备或者模拟器中的一个运行的程序,显示出布局的树结构。每个块上的红绿灯代表它的测量,布局,以及绘图性能,帮助你找出潜在的问题。有读者在读完《Android UI 优化——使用HierarchyViewer工具》后提出HierarchyViewer没有显示出红绿黄灯和时间,这怎么解决。在tool目录启动HierarchyViewer确实没有相应的设置去显示,但是可以在eclipse中启动HierarchyViewer去设置。Window->Open Perspective->others->hierarchyviewer。在Tree View点击三个圆圈的按钮,如图一:
图一
图一图二给出了显示绘制时间和不显示绘制时间的区别:
图二 图三
我们开始分析一个ListView的item布局,如图四,这个布局的左边显示了一幅图片,两个文字item放在右边。当布局被重复加载的时优化显得尤为重要。
图四
图四的布局文件在HierarcheyViewer中显示的层次结构如图五,选中LinearLayout会显示各种性能参数,如图六:
图五 图六
在图五中显示视图有三层结构,并且有些显示了红灯黄灯,这就需要我们优化,图六中也显示了绘制时间。
上述布局性能较低的原因主要是由一个内嵌的LinearLayout所引起,为了提高性能,我们使用RelativeLayout,将该布局浅而广的扁平化结构代替为深而窄的树形结构,这样该布局变为一个2层的结构,修改后的布局结构如图七:
图七
此时,绘制时间减少了,并且去掉了红灯、黄灯显示。
使用lint
《Android代码优化——使用Android lint工具》简单说明了lint的使用,在布局文件内运行Lint工具,可以找出那些可能要优化的布局结构。Lint工具代替Layoutopt工具,并且有更大的功能。如下是Lint的一些示例:
1、Use compound drawables,在LineraLayout布局中包含一个ImageView和一个TextView,可以使用compound drawable代替,性能会更好。
2、Merge root frame,如果root布局是FrameLayout,可以使用<merge/>代替,具体可参考《Android抽象布局——include、merge 、ViewStub》。
3、Useless leaf,没有子布局的layout可以去掉
4、Useless parent ,一个布局不是ScrollView或者不是一个根布局,也没有背景,只有一个孩子节点,可以被删掉。
5、Deep layouts,布局若有太多内嵌,则性能很差。考虑使用RelativeLayout 以及GridLayout等扁平化布局代替。默认布局最大深度是10.
Android使用Lint请移步至《Android代码优化——使用Android lint工具》。
再说些题外话,希望路过的各位支持,博主有幸成为2013年度博客之星的候选人,期待你的一票,谢谢您的支持。
投票猛击:
http://vote.blog.csdn.net/blogstaritem/blogstar2013/xyz_lmn
参考:
http://developer.android.com/training/improving-layouts/optimizing-layout.html
- Android Launcher 分析
- Android Launcher 分析
- android launcher总体分析
- android launcher源码分析
- android launcher 分析
- Android Launcher 分析
- Android Launcher 分析
- android launcher总体分析 .
- android launcher源码分析 .
- Android launcher分析
- Android Launcher 分析
- Android Launcher 分析
- Android Launcher 分析 .
- Android Launcher 分析
- android 的 Launcher 分析
- Android Launcher 内存分析
- android launcher源码分析
- android launcher总体分析
- 【HDU4911】分治求逆序数
- oracle 的完全卸载
- hdoj 1257 最少拦截系统 【贪心】
- 给MFC加入声音
- Oracle性能调优--并行(parallel)
- Android Launcher分析
- php mail为什么会有个感叹号
- 安卓推送方案及比较
- Quartz 2D的坐标系和UIKit的坐标系对比以及相互转换
- Jsoup入门指南
- DuiLib中CTileLayoutUI的一个bug
- 【超级详细】使用java生成带干扰线颜色不一的验证码
- 黑马程序员_HashMap
- 字符串匹配之rabin_karp