美文网首页
Android - 小红书优化 - 封装ViewGroup的优化

Android - 小红书优化 - 封装ViewGroup的优化

作者: 非典型的程序员 | 来源:发表于2022-10-26 22:58 被阅读0次

问题

我们知道过多的布局嵌套对View的绘制速度是有一定影响的,多一层嵌套意味着至少多走一次绘制流程,所以开发过程中一般都会特别注意layout层级的问题。针对xml往往可以使用ConstraintLayout替换以往的四大布局,但针对自定义ViewGroup却很少有开发者关注其是否有多余的布局嵌套。

粗略看了小红书二十几个自定义ViewGroup,发现全部均有多余的布局嵌套问题,无一例外!所以建议小红书在这个方面可以着重优化一下!

如下案例:

BeautySettingView类

如上图,自定义ViewGroup  BeautySettingView继承自LinearLayout,然后直接通过inflate将xml添加为自身的子布局,这样会导致多了一层LinearLayout的嵌套,布局层次如下关系:

- BeautySettingView   (自定义ViewGroup)

    - LinearLayout  (从xml加载的布局)

        - com.xingin.alpha.emcee.beautify.NoBeautyView

        - View

        - android.recyclerview.widget.RecyclerView

理想的方案是优化成如下关系:

- BeautySettingView   (自定义ViewGroup)    

    - com.xingin.alpha.emcee.beautify.NoBeautyView

    - View        

    - android.recyclerview.widget.RecyclerView


优化方案

按照我经验,最好的方案是:xml使用merge标签

步骤如下:

1.xml布局的根节点使用merge;

2.merge节点通过指定属性tools:parentTag="android.widget.LinearLayout"进行布局预览

3.在自定义ViewGroup中重新设置相关布局属性(ps:因为merge标签上的属性通过inflate是无效的,这一点非常需要注意)

根据以上步骤,重新修改BeautySettingView

(一)xml布局的根节点使用merge:

(二)merge节点通过指定属性tools:parentTag="android.widget.LinearLayout"进行布局预览:

(三)在自定义ViewGroup中重新设置相关布局属性:

相关文章

网友评论

      本文标题:Android - 小红书优化 - 封装ViewGroup的优化

      本文链接:https://www.haomeiwen.com/subject/dmezzrtx.html