RelativeLayout和LinearLayout

1、

界面

RelativeLayout和LinearLayout


列表一的布局:根布局用了RelativeLayout

RelativeLayout和LinearLayout


列表二的布局:

RelativeLayout和LinearLayout

布局文件:

RelativeLayout和LinearLayout


层级关系是并列的

RelativeLayout和LinearLayout


列表1的嵌套比较严重,列表二比较扁平,列表二性能比较好

2、

DecorView使用的是线性布局。虽然Relativelayout的测量效率一般,测量效率不如线性布局那样好。

界面:

RelativeLayout和LinearLayout

选中相对布局:

RelativeLayout和LinearLayout


点击出现数据分析

测量耗时是0.17ms

RelativeLayout和LinearLayout

②线性布局耗时:0.117ms

RelativeLayout和LinearLayout


出现这种情况的原因是:RelativeLayout的子view的排列方式是基于彼此的依赖关系,而依赖关系可能和在子view在布局中的排列顺序并不相同,在确定子每个view的顺序的时候,需要给所有的子view进行排序,又因为相对布局允许A和B两个子view允许横向的B依赖于A,但是纵向A又依赖于B这种关系,所以需要在横向和纵向上进行一次分别测量。但是线性布局不存在这样的问题,线性布局有一个oritention的属性,在使用的时候需要先给这个属性进行赋值,这个值有两个,一个是horizontal,一个是vertical。如果是vertical,只需要在同一方向上进行纵向测量,如果是横向布局,只需要在横向上进行一次测量。这也就解释了为什么线性布局的测量会高于相对布局。如果线性布局设置了weight属性的话,也会进行两次测量。这是因为它会先避开设置过weight属性的view对其它view进行第一次测量,测量过后会把剩余的空间都给设置了weight属性的view进行第二次测量。这就是相对布局和线性布局在测量方式上存在区别的地方。


3、布局比较

RelativeLayout和LinearLayout


4、

RelativeLayout和LinearLayout