美文网首页
布局优化

布局优化

作者: 程序设计法师 | 来源:发表于2019-04-12 18:26 被阅读0次

通常我们可以使用merge标签来删减多余或者额外的层级
使用merge标签需要注意两点:
1 merge只可以作为layout.xml的根节点
2 当需要扩充的layout.xml本身是由merge作为根节点的话,需要被导入的layout.xml置于viewGroup中,同时还需要设置参数attachToRoot为true

view.inflate(int resource,ViewGroup root,boolean attachToRoot)

merge还有一个用法是当用include或者viewStub标签从外部导入xml结构时,可以将被导入的xml用merge作为根节点表示,这样被嵌入父级结构中后,可以很好地将它所包含的子集融合到父级结构中,而不会出现冗余的节点

启动 sdk/tools文件夹中的hierarchyviewer.bat此时可以查看当前UI的结构图
如果此时我们的根布局是FrameLayout,那么可以用merge标签来替代他,因为系统ContentView的根布局也是FrameLayout,这样可以减少一层嵌套

include重用布局代码
ViewStub延迟加载,viewStub是一个不可见大小为0的view,当调用ViewStub的setVisibility()函数设置为可见或者调用inflate()函数初始化该View的时候,ViewStub引用的资源开始初始化
可以通过ViewStub的inflatedId属性来重新定义引用的LayoutID

ViewStub stub=(ViewStub)findViewById(R.id.stub);
View inflated=stub.inflate();
通过Layout Optimization工具可以分析所提供的Layout,并提供优化意见,可以在tools文件夹中找到layoutopt.bat并启动

想要运行它需要命令行进入sdk的tools目录,输入layoutopt加上我们的布局路径,后面可以跟上空格,添加多个布局路径

安卓以前布局中视图的数量最多不能超过80个,一个布局不应该有太多嵌套,开发团队建议保持在10级以内,不然会耗费很多内存

可以通过使用Hierarchy Viewer工具分析布局的层叠和渲染时间

相关文章

网友评论

      本文标题:布局优化

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