Android开发:提高布局性能-按需加载视图

翻自:http://developer.android.com/training/improving-layouts/loading-ondemand.html
有时,你的布局需要一些复杂,但很少用的视图。无论是item详情,进度指示器,撤销信息,你可以使用懒加载来减少内存占用并加速。

定义一个ViewStub

ViewStub是一个轻量级,没有尺寸并且不需要绘画也不会加到布局里。同样,inflate成本和加到视图布局的成本都很低。每个ViewStub仅仅需要使用android:layout指定inflate哪个布局。

下面的ViewStub是一个半透明的进度条浮层。它仅仅在会在新的item被导入到应用时显示。


载入ViewStub布局

当你想要载入ViewStub指定的布局时,可以调用setVisibility(View.VISIBLE)方法或inflate()方法

((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

提示:一旦inflate()完成,会返回View,所以你不需要再调findViewById()

一旦visible/inflated,viewStub就不再是视图里的元素了。它会被指定的布局替换,这个布局的根节点id就是ViewStub的android:inflatedId属性指定的id。(android:id指定的ID只有在visible/inflated前有效)
提示:ViewStub的一个缺点是,不支持布局里的merge标签

© 2014, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用开发笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注