关于布局优化 include、merge 、ViewStub

今天在看别人项目中,看到一个很有意思的标签,,出现在了布局文件中,很好奇,查了一下一下,原来这和是一家子啊,啊哈哈

1.重用布局

相信大家都不陌生,我们重用布局时常用的就是她,用法也很简单

                                              

2.减少视图层级

它可以删减多余的层级,优化UI,多用于替换FrameLayout或者当一个布局包含另一个时,标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用merge优化。

关于布局优化 include、merge 、ViewStub_第1张图片

3.需要时出现的viewstub

标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。各种不常用的布局想进度条、显示错误消息等可以使用该标签,以减少内存使用量,加快渲染速度。是一个不可见的,大小为0的View。标签使用如下:


关于布局优化 include、merge 、ViewStub_第2张图片

当你想要加载该布局时:

((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目前有个缺陷就是还不支持标签。


虽然只是一点小小的东西,但是还是希望对你有所帮助~~

你可能感兴趣的:(关于布局优化 include、merge 、ViewStub)