关于Android布局优化(二)

使用< ViewStub>实现View的延迟加载

之前说道可以使用< include>标签来引用布局,除此之外还可以< ViewStub>标签来实现对View的引用和延迟加载。

实例:

<ViewStub
    android:id="@+id/not_show"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout="@layout/is_show"/>

is_show就是引用的布局,默认是不显示的,而且大小是0
那怎么显示这个布局呢?
- 首先,需要通过findViewById()找到< ViewStub>

mViewStub = (ViewStub)findViewById(R.id.not_show);
  • 然后使用inflate方法显示引用的View
View showView = mViewStub.inflate();

或者使用

mShowView.setVisibility(View.VISIBLE);//显示引用的布局
  • 之后就可以使用shouView.findViewById()找到引用布局中的组件了

注意:

  • 当< ViewStub>不可见时,它的大小为0;
  • 当< ViewStub>设置为可见或者使用了inflate后,它就不存在了,取而代之的是被inflate的布局,并且会使用< ViewStub>中通过android:inflateId指定的ID给该布局设置ID,所以两次调用inflate会报错。

有人会问这不是很View.GONE的效果差不多吗?
二者的区别是:
< ViewStub>在初始时不显示,只有在显示的时候才会渲染布局。
而View.GONE在初始布局树的时候就已经添加到布局树上了。
所以比较起来,< ViewStub>有更高的效率。

关于Android的布局优化先写到这里,以后有新的了解再补充。
有问题欢迎提问。
也可以加“Android开发经验交流”群: 454430053

posted @ 2016-03-31 23:22  Z漫步  阅读(105)  评论(0编辑  收藏  举报