Loading Views On Demand [按需载入视图]

某些时候,我们需要一些很复杂的视图却仅仅很少用到。如果我们在它仅仅需要的时候再载入,这样可以减少内存的使用并且给用户带来流畅的体验。

Define a ViewStub [定义ViewStub]

ViewStub是一个轻量级的view,没有占有空间,没有花费draw的资源,也没有参与在任何一个layout里面。
不仅创建它仅需要很少的系统资源,而且存留在View的层级也是个比较不花费资源的动作。
每一个ViewStub简单的包含一个android:layout的属性来指定待创建的布局文件。

下面是一个包含Progress bar的ViewStub例子,这对于overlay来说是透明的,progress bar仅仅会在需要导入的时候才会可见。
<ViewStubandroid:id="@+id/stub_import"android:inflatedId="@+id/panel_import"android:layout="@layout/progress_overlay"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_gravity="bottom" />

Load the ViewStub Layout [载入ViewStub的布局]

当你想要载入在ViewStub中定义的布局的时候,可以calling setVisibility(View.VISIBLE) or call inflate().

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

一旦被设置可见或者被创建,这个ViewStub组件则从View层级中消失,它被创建出来的布局所替代,而且这个布局的ID就是ViewStub里面用android:inflatedId属性所定义的。

(用来定义这个ViewStub的ID的属性andoid:id直到被可见才是有效的)。
Note:ViewStub的一个缺陷是目前并不支持创建包含有<merge>标签的布局文件。
更多ViewStub的信息请看:http://developer.android.com/resources/articles/layout-tricks-stubs.html
学习自:http://developer.android.com/training/improving-layouts/loading-ondemand.html
转载请注明出处:http://blog.csdn.net/kesenhoo,谢谢!

【Android Training - Performance】提高显示布局文件的性能[Lesson 3 - 按需载入视图(ViewStub的使用方法)]相关推荐

  1. android创建布局文件,android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  2. Android训练课程(Android Training) - 高效的显示图片

    高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...

  3. Android中如何将layout布局文件分类

    问题描述:layout下布局文件过多,导致查找某一个布局文件很麻烦. 解决方法:在layout下创建各个模块布局文件夹,进行分类管理. 操作步骤: (1)在layout下创建各个模块分录,并创建子la ...

  4. android模拟器中,不能将文件拷贝到的/system分区的原因,以及自动化解决方法

    某些情况下,要调试的apk需要一些共享库,而这些库要放/system/lib下才能在运行时连接到. 但android模拟器每次启动后,系统分区/system是以只读方式挂载的,不能用向/system分 ...

  5. Android开发笔记(七十四)布局文件优化

    include/merge 布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件.include适用于多个布 ...

  6. 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )

    文章目录 一. 过度绘制 二. 过度绘制两种情况 ( 自定义控件 | 布局文件 ) 三. 过度绘制调试 1. 打开过渡绘制调试工具 2. 过渡绘制调试中不同颜色的含义 3. 过渡渲染示例 四. 背景过 ...

  7. Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起

    本文主要内容是讲解一个视图View或者一个ViewGroup对象是如何添加至应用程序窗口中的.下文中提到的窗口可泛指我们能看到的界面,包括一个Activity呈现的界面(我们可以将之理解为应用程序窗口 ...

  8. android怎么查看方法被谁调用,Android中查看布局文件中的控件(view,id)在哪里被调用(使用)...

    在阅读别人的代码时通常是很痛苦的,有时很想要看一看布局中的控件在哪里被调用了,为之很苦恼 在这里提供一种方法. 复制要查看的控件ID,到R文件中搜索到该ID, 接下来就好办的了,选中ID按下Ctrl鼠 ...

  9. android button 属性,两行显示数字,前面各有图像,Android_2_常用控件及常用属性

    安卓常用控件及其常用属性 TextView android:id 这是唯一地标识控件的ID. android:capitalize 如果设置,指定该TextView中有一个文本输入法 会自动利用什么类 ...

最新文章

  1. poj1195(二维树状数组)
  2. TTCN手动测试总结
  3. FPGA之道(35)Verilog中的并行与串行语句
  4. 达梦想oracle迁移,oracle存储过程迁移达梦心得
  5. 表格存储TableStore全新升级,打造统一的在线数据存储平台!
  6. 加密相关(对称加密、非对称加密、信息摘要、数字签名、CA数字证书)
  7. android ascii 比较大小写,为什么可以通过ASCII中的字母排序规则来进行字母的大小写转换?...
  8. 银行家算法的数组方式实现
  9. OpenCV2计算机编程手册(二)基于类的图像处理
  10. Python 列表深浅复制详解
  11. 课设——C语言学生成绩管理系统
  12. 码云html页面预览,码云,正式支持 Pages 功能,可以部署静态页面
  13. Proteus一体化安装STC15库添加
  14. 部分英文常用口语单词(30%转贴+70%原创)
  15. javascript 属性的特性 二十五
  16. 物联网Wifi三大新主流势均力敌 SIP时代即将来袭
  17. 程序员找工作遇到的“了解、熟悉、精通”的三种技能要求实际上是这样的标准!
  18. debug这个词真的源自小虫子
  19. 家具力学性能测试软件,家具力学性能
  20. 华为服务器做系统密码,华为服务器默认密码是多少

热门文章

  1. 断桥残雪php爱墙(许愿墙)程序源码
  2. JavaScript 异步
  3. verilog常用模块1——按键消抖模块详解
  4. unity3D4.0菜单翻译
  5. 【HiFlow】解决通知群经常发通知的麻烦
  6. 12星座个性陶瓷复古项链
  7. Centos7卸载软件或程序
  8. 索伯(Sobel)算子原理讲解和实现
  9. python sobel算子_利用sobel算子计算图像的梯度(python+opencv)
  10. 什么样的品牌设计公司比较好?