参考> http://www.jianshu.com/p/8a7d059da746
先说结论
-
RelativeLayout与LinearLayout,到底谁的性能更高,以前面试经常会被问到的问题:
-
1.在不影响层级深度的情况下,使用LinearLayout而不是RelativeLayout。
2.因为RelativeLayout会让子View调用2次onMeasure,LinearLayout只会让子View调用1次onMeasure (在有weight时,也会调用子View2次onMeasure)
简单布局的绘制时间对比
LinearLayout
Measure:0.738ms
Layout:0.176ms
draw:7.655ms
RelativeLayout
Measure:2.280ms
Layout:0.153ms
draw:7.696ms
layout和draw的过程两者相差无几,考虑到误差的问题,几乎可以认为两者不分伯仲,关键是Measure的过程RelativeLayout却比LinearLayout慢了一大截
具体的绘制过程可以看下源码,顶部原文链接中有
总结起来原因就是:
1.RelativeLayout中子View的排列方式是基于彼此的依赖关系,有可能是上下,有可能是左右,这两个方向需要分别测量。
2.LinearLayout的measure就简单明了的多了,先判断线性规则,然后执行对应方向上的测量一次就好。
3.如果使用weight属性,LinearLayout会避开设置过weight属性的view做第一次measure,完了再对设置过weight属性的view做第二次measure。由此可见,weight属性对性能是有影响的.