android布局之二:布局复用

来源:互联网 发布:呼吸税 知乎 编辑:程序博客网 时间:2024/06/10 08:08
对于上一篇文章提到的布局管理器,使用起来容易,但是要想达到高效的目的还是没那么容易的,尤其是仅仅是利用它的最基本的特征往往创建不了最优的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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 铁盖玻璃瓶打不开怎么办 玻璃瓶塑料盖打不开怎么办 玻璃杯拧不开了怎么办 不锈钢瓶盖打不开怎么办 密封玻璃罐打不开怎么办 玻璃密封盒打不开怎么办 密封瓶打不开怎么办 瓶盖拧太紧打不开怎么办 玻璃瓶盖拧不紧怎么办 电饭煲盖子打不开怎么办 瓶盖太紧开不开怎么办 颜料拧不开怎么办 瓶盖一直转不开怎么办 水粉颜料拧不开怎么办 塑料盖子扭不开怎么办 水瓶盖太紧打不开怎么办 压盖子拧不开怎么办 公章盖子拧不开怎么办 塑料瓶打不开了怎么办 瓶盖转不开怎么办 化妆品瓶盖太紧拧不开怎么办 塑料杯拧不开了怎么办 玻璃瓶盖子拧不开怎么办 塑料水杯拧不开怎么办 玻璃瓶没盖子怎么办 罐装榨菜打不开怎么办 睫毛胶水拧不开怎么办 硅胶盖子打不开怎么办 胶水打不开了怎么办 胶水瓶扭不开怎么办 胶水盖打不开怎么办 睫毛胶打不开怎么办 水杯盖拧不紧怎么办 水杯拧不紧漏水怎么办 蜂蜜瓶子打不开怎么办 胶水瓶口堵住怎么办? 瓶子有气打不开怎么办 罐子瓶盖拧不开怎么办 泡菜瓶子打不开怎么办 玻璃罐盖子打不开怎么办 饮料瓶子打不开怎么办