Android中RelativeLayout和LinearLayout性能分析

参考> 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属性对性能是有影响的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值