ViewStub初探

当布局结构过于复杂,包含很多ViewGroupview控件。这样就导致View树的层次越来越深,当程序一下子加载这么复杂的布局的时,所花费的时间会很多。既然有问题,那么肯定会有对应得解决办法。可以使用ViewStub来延迟加载某些视图资源,让其他一些重要的视图先加载出来。


在学习ViewStub之前,先看一下ViewStub到底是什么。我们来看看官方api文档的解释。

ViewStub是一个不可见的,大小为0view,它可以用于在运行时动态的加载layout资源。当ViewStub被设置为可见状态,或者它的inflate方法被调用,ViewStub中的layout资源文件就会被加载。它将用加载的layout来替换自己原来的位置。因此,一旦ViewSutb调用setVisibility(参数为INVISIBLE或者VISIBLE)或者inflate方法,ViewStub就会从它原来所在的视图阶层中消失,随之的就是加载的视图被放置在ViewStub原来的位置,而这加载的视图也将会继承ViewStub原来的layoutparameters。(以上纯属笔者翻译,如有错误,敬请指正,谢谢)

官网还给我们举了一个小例子,如下:

     <ViewStubandroid:id="@+id/stub"
               android:inflatedId="@+id/subTree"
               android:layout="@layout/mySubTree"
               android:layout_width="120dip"
               android:layout_height="40dip" />

然后也给出了具体调用的java代码:

     ViewStub stub =(ViewStub)findViewById(R.id.stub);
     View inflated = stub.inflate();

一旦inflate被调用,该stub就会被加载的view(在这里是idsubTree,我们可以通过findviewbyid来找到加载的view)替换掉,该方法会返回加载的view的引用,所以我们不需要在通过findviewbyid来找该view了。

 

通过学习该api文档,发现官网描述的ViewStub的用法非常简单,非常方便动态地加载和隐藏layout资源。常用于layout视图层次比较复杂的情况,这种情况下,可以让activity界面较快的能显示出来,等界面呈现之后,在加载剩余的stub对应的视图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值