android布局之二:布局复用
来源:互联网 发布:呼吸税 知乎 编辑:程序博客网 时间:2024/06/07 02:19
对于上一篇文章提到的布局管理器,使用起来容易,但是要想达到高效的目的还是没那么容易的,尤其是仅仅是利用它的最基本的特征往往创建不了最优的View,对于inflate布局文件本身是有性能消耗的,尤其是每增加一个嵌套布局或视图都会对应用程序产生很大的影响,所以我们就要尽量的做到对已存在的布局在更新时最小的变化
一般原则有:
- 避免不必要的嵌套:不要把一个布局放置在其他布局里,除非是必要的。
- 避免使用太多视图:在一个布局中每增加一个新的视图,都会在inflate操作时耗时和消耗资源。任何时候都不要在一个布局中包含超过80个视图,否则,消耗在inflate操作上的时间会很大。
避免深度嵌套:布局可以任意嵌套,这极易于创建复杂和深度嵌套的布局层次。如果没有硬性限制,将嵌套限制在10层以下是好的实践。
(其实总结起来就两点:深度和广度上都尽量的简单)
与UI优化相关的Android工具有:layoutopt、hierarchyviewer.bat
- layoutopt:后面跟要优化的资源文件,系统会列出可优化的方式
- hierarchyviewer:可以树形结构显示当前布局,我们可以通过这种方式学习别人优秀的布局方式,同时可以更加全局的把握自己的布局方式、特点,从而进行优化。
一些可用于资源复用的标签:ViewStub、merge、include
- ViewStub: 此标签可以使UI在特殊情况下,直观效果类似于设置View的不可见性,但是其更大的(R)意义在于被这个标签所包裹的Views在默认状态下不会占用任何内存空间。ViewStub通过include从外部导入Views元素。
用法:通过android:layout来指定所包含的内容。默认情况下,ViewStub所包含的标签都属于visibility=gone。ViewStub通过方法inflate()来召唤系统加载其内部的Views。 如:
<ViewStub android:id="@+id/stub" android:inflatedId="@+id/subTree" android:layout="@layout/mySubTree" android:layout_width="120dip" android:layout_height="40dip" />
- merge:标签用于减少View树的层次来优化Android的布局
可参考http://www.cnblogs.com/xirihanlin/archive/2010/04/23/1718353.html - include:可以通过这个标签直接加载外部的xml到当前结构中,是复用UI资源的常用标签。如:
<include android:id="@+id/cell1" layout="@layout/ar01" />
0 0
- android布局之二:布局复用
- Android深入浅出之二(布局)
- (二)Android布局之相对布局(RelativeLayout)
- Android布局详解之二:LinearLayout
- android编程之代码布局(二)
- android学习之二 五大布局
- Android布局详解之二:LinearLayout
- android编程之代码布局(二)
- android编程之代码布局(二)
- Android布局详解之二:LinearLayout
- android优化之布局 的优化(二)
- Android 性能优化之布局优化 (二)
- Android布局详解之二:LinearLayout
- Android学习之路--布局二
- Android布局优化之merge(二)
- Android性能优化之布局篇(二)
- android编程之代码布局(二)
- android布局之线性布局
- PrimoCache2.2.0汉化程序与2.0.0的交叉使用
- NYOJ 开心的小明
- Git教程
- postgresql自动提交的问题
- UIView设置背景图片
- android布局之二:布局复用
- CSDN网站系统升级公告
- Java中的日期操作类
- 快速排序算法
- java动态代理与AOP
- Devstack:OpenStack开发环境快速部署
- 关于java中泛型问题
- Nutch1.4+win7配置流程(亲测好用)
- 编程比赛 填空题 转载