一.基础概念:
1.include:将重复使用的相同的布局放在include里面。
2.merge:设置在布局文件的根节点上,一般配合include使用,在include中引入merge会使得merge标签内包含的内容会直接填充到include的位置,不会再添加任何额外的布局结构。
3.Viewstub:属于view 的一种,默认是不可见的,它没有大小,没有绘制功能,也不参与布局,资源消耗非常低,只有通过调用setVisibility函数或者Inflate函数才会将其要装载的目标布局给加载出来。
二.作用概括:
1.include:实现布局复用。
2.merge:减少布局层级,加快视图绘制,提高UI性能。
3.Viewstub:延迟加载的作用,减少资源的损耗。
三.使用场景:
1.include:各种可以复用的布局,如标题栏。
2.merge:
(1)根布局是FrameLayout且不需要设置background或padding等属性,可以用merge代替,因为Activity的ContentView父元素就是FrameLayout,所以可以用merge消除只剩一个。
(2)某布局作为子布局被其他布局include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自动被忽略,而将其子节点全部合并到主布局中。
(3)自定义View如果继承LinearLayout(ViewGroup),建议让自定义View的布局文件根布局设置成merge,这样能少一层结点。
3.Viewstub:各种不常用的布局可以使用这样的方式,例如未登录、无网络、空数据等布局。