今天在看别人项目中,看到一个很有意思的标签,<merge>,出现在了布局文件中,很好奇,查了一下一下,原来这和<include>是一家子啊,啊哈哈
1.重用布局<include>
相信大家都不陌生,我们重用布局时常用的就是她,用法也很简单
<include layout="@layout:titlebar"/>
2.减少视图层级<merge>
它可以删减多余的层级,优化UI,多用于替换FrameLayout或者当一个布局包含另一个时,标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用merge优化。
3.需要时出现的viewstub
<ViewStub>标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。各种不常用的布局想进度条、显示错误消息等可以使用该标签,以减少内存使用量,加快渲染速度。<ViewStub>是一个不可见的,大小为0的View。标签使用如下:
当你想要加载该布局时:
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();
当调用inflate()函数的时候,ViewStub被引用的资源替代,并且返回引用的view。这样程序可以直接得到引用的view而不用再次调用函数findViewById()来查找了。
注:ViewStub目前有个缺陷就是还不支持<merge>标签。
虽然只是一点小小的东西,但是还是希望对你有所帮助~~