美文网首页
ViewStub使用场景

ViewStub使用场景

作者: 米奇小林 | 来源:发表于2020-10-20 20:27 被阅读0次

ViewStub可以理解成一个非常轻量级的View,与其他的控件一样,有着自己的属性及特定的方法。当ViewStub使用在布局文件中时,当程序inflate布局文件时,ViewStub本身也会被解析,且占据内存控件,但是与其他控件相比,主要区别体现在以下几点:

1.当布局文件inflate时,ViewStub控件虽然也占据内存,但是相相比于其他控件,ViewStub所占内存很小;

2.布局文件inflate时,ViewStub主要是作为一个“占位符”的性质,放置于view tree中,且ViewStub本身是不可见的。ViewStub中有一个layout属性,指向ViewStub本身可能被替换掉的布局文件,在一定时机时,通过viewStub.inflate()完成此过程;

3.ViewStub本身是不可见的,对ViewStub setVisibility(..)与其他控件不一样,ViewStub的setVisibility 成View.VISIBLE或INVISIBLE如果是首次使用,都会自动inflate其指向的布局文件,并替换ViewStub本身,再次使用则是相当于对其指向的布局文件做相应操作而非 ViewStub了。

需要注意的是:

1.ViewStub之所以常称之为“延迟化加载”,是因为在多数情况下,程序无需显示ViewStub所指向的布局文件,只有在特定的某些较少条件下(如空态页、网络请求失败等),此时ViewStub所指向的布局文件才需要被inflate,且此布局文件直接将当前ViewStub替换掉,具体是通过viewStub.infalte()或viewStub.setVisibility(View.VISIBLE)来完成;

2.正确把握住ViewStub的应用场景非常重要,如1中所描述需求场景下,使用ViewStub可以优化布局;

3.对ViewStub的inflate操作只能进行一次,因为inflate的时候是将其指向的布局文件解析inflate并替换掉当前ViewStub本身(由此体现出了ViewStub“占位符”性质),一旦替换后,此时原来的布局文件中就没有ViewStub控件了,因此,如果多次对ViewStub进行infalte,会出现错误信息:ViewStub must have a non-null ViewGroup viewParent。

4. 3中所讲到的ViewStub指向的布局文件解析inflate并替换掉当前ViewStub本身,并不是完全意义上的替换(与include标签还不太一样),替换时,布局文件的layout params是以ViewStub为准,其他布局属性是以布局文件自身为准。

相关文章

  • viewstub的使用

    viewstub的使用场景 viewStub的一些特性 viewStub只能inflate一次,之后viewStu...

  • ViewStub使用场景

    ViewStub可以理解成一个非常轻量级的View,与其他的控件一样,有着自己的属性及特定的方法。当ViewStu...

  • 关于ViewStub的所有

    ViewStub - Optimized Layout 作用:用于优化布局,懒加载,运行时才会加载布局。 使用场景...

  • Android性能优化之一

    Viewstub使用

  • 启动优化实践

    1.ViewStub的使用 官方解释:A ViewStub is an invisible, zero-sized...

  • ViewStub--使用介绍

    (1)什么时候使用ViewStub?为什么使用ViewStub? 当我们需要根据某个条件控制某个View的显示或者...

  • ViewStub 使用

    概述 ViewStub初始不可见且大小为0 ViewStub可用于在运行时延迟扩展布局资源,可以避免资源浪费。在U...

  • ViewStub

    (1)什么时候使用ViewStub?为什么使用ViewStub?当我们需要根据某个条件控制某个View的显示或者隐...

  • Android优化篇 ViewStub按需加载布局

    原文链接 更多教程 你将学到 1.ViewStub标签的使用姿势2.ViewStub标签的使用例子3.ViewSt...

  • Android 简单解读了ViewStub的代码和注释,其他的不

    ViewStub应用的场景比较少,以前用过几次。时间一长又忘记了,很是苦恼。 于是把ViewStub的源码过了一遍...

网友评论

      本文标题:ViewStub使用场景

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