Android UI优化-merge标签的使用

时间:2024-04-14 08:06:20

       追求精益求精的程序员,项目开发完成怎么能少的了优化,偶然间发现一个比较不错的android 布局优化神器,merge标签,简单实用,下面就跟大家分享一下:  merge是什么?merge的使用?

一、merge是什么

       merge直译过来是合并的意思,在 我们的布局中就是合并多余的层级。merge不是view,也不是viewGroup,它只是声明一些试图等待被添加。

二、merge的使用

1.根布局为FrameLayout的情况下

正常布局未使用merge标签

Android UI优化-merge标签的使用

通过工具查看视图结构(这个工具的使用方法在我的另一篇文章中点击打开链接)是这样的:我们会发现,这样简单的页面布局,使用了两个FrameLayout节点,有一个多余的节点。

Android UI优化-merge标签的使用


关键!关键!关键!我们直接把根布局的FrameLayout换成merge标签:

Android UI优化-merge标签的使用


神奇的事就这样发生了,我们再通过工具查看页面结构:

Android UI优化-merge标签的使用

使用完merge标签后,少了一层FrameLayout的渲染。

2.当子控件完全不需要依赖父容器时,比如一个页面只有一个textView 像这样:

Android UI优化-merge标签的使用

页面结构是这样的:

Android UI优化-merge标签的使用


这种情况下 我们可以吧</RelativeLayout>直接换成</merge>

Android UI优化-merge标签的使用

聪明的你,看到这里已经箱单了结果,没错就是你想的那样,我们又省去了一个RelativeLayout的节点

Android UI优化-merge标签的使用

        还有其他的情况下课使用merge标签,比如说两个LinnerLayout嵌套,自定义view的情况,与include仪器使用时,只要明白了merge的思想,我想你会用的得心应手的。

总结:

    1.merge标签必须放到布局的根节点上

    2.merge标签不是view,也不是viewGroup,它只是一个声明了一个视图等待被添加

    3.当LayoutInflate加载view中使用的merge标签时,第二个参数不能为null,第三个参数设为true    LayoutInflater.from(context).inflate(R.layout.merge_layout_view, this, true);