本文翻译自Google官方文档

Loading Views On Demand

有时你的布局可能需要一些复杂却又很少被用到的视图。无论他们是item详情、进度指示器,或撤销的消息,你都可以在需要时加载这些视图,来减少内存使用量并加快渲染速度。

Define a ViewStub

ViewStub是一个没有尺寸大小并且不会在布局中嵌套或渲染任何东西的轻量级的视图。因此在视图层次展现或隐藏它的代价非常小。每一个ViewStub仅仅需要包含android:layout属性来展现指定的布局。

以下ViewStub是一个半透明的进度条。他只有在新items被导入到应用中时才是可见的。

    <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中定义的布局的时候,可以calling setVisibility(View.VISIBLE) or call inflate().

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

注意:inflate()方法在视图渲染完毕后便直接展现该已渲染的视图View。因此如果你需要和布局交互的话,不需要再调用findViewById()方法。

一旦一个ViewStub是可见的或渲染完毕,该元素便不再是视图层次的一部分。它被已渲染的布局替换,并且该布局的根视图的ID是在ViewStub中被android:inflatedId属性指定的ID。(在中被android:id指定的ID只有在这个ViewStub布局是可见/渲染完毕才是有效的。) 注意:ViewStub的一个缺点是,目前它在要渲染的布局中并不支<merge/>标签。

看完本文有收获?请转发分享给更多人


欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构,不聊其他!打造最有价值的架构师圈子和社区。

本公众号覆盖中国主要首席架构师、高级架构师、CTO、技术总监、技术负责人等人 群。分享最有价值的架构思想和内容。打造中国互联网圈最有价值的架构师圈子。

  • 长按下方的二维码可以快速关注我们

  • 如想加群讨论学习,请点击右下角的“加群学习”菜单入群

Anroid性能优化系列——Improving Layout Performance(一)相关推荐

  1. Android性能优化系列:启动优化

    文章目录 1 应用启动类型 1.1 冷启动 1.2 温启动 1.3 热启动 2 查看启动耗时 2.1 adb命令查看 2.2 Logcat Displayed查看启动耗时 2.3 手动记录启动耗时 2 ...

  2. Android性能优化系列之apk瘦身

    Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率 ...

  3. Android App 性能优化系列结语篇

    Android App 性能优化系列结语篇 原文出处:http://gold.xitu.io/post/581f4ad667f3560058a33057 关于Android App的优化, 从第一篇的 ...

  4. Android App性能优化系列

    Android App性能优化系列 关于Android App的优化,从第一篇的计划开始,到内存优化的系列文结束,不知不觉近三个月的时间,写了十五六篇相关的博文,算是对自己的知识的一个系统化,也希望能 ...

  5. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(一) 平均负载、上下文切换、CPU 使用率

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(一) 平均负载.上下文切换.CPU 使用率 [1]相关概念 [1.1]平均负载 平均负载是指单位时间内,系统处于可运行状态和不可 ...

  6. Android性能优化系列之内存优化

    在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(Garbage Collection,GC)完成的,程序员不需要通过调用函数来释放内存,但也随之带来了内存泄漏的可能,上篇博客,我介 ...

  7. 推荐:Java性能优化系列集锦

    Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...

  8. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(三) Linux 软中断 [1]相关概念 [1.1]中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力:为了减少 ...

  9. 性能优化系列:每个程序员都应该知道的数字

    目录 前言 正文 看这些数据的目的 1)CPU非常非常快 2)内存很快了,但是相比CPU来说还是太慢了 3)磁盘性能非常非常慢 4)磁盘顺序I/O比随机读I/O快很多 5)网络传输也是比较耗时的,基本 ...

  10. 【MySQL性能优化系列】百万数据limit分页优化

    背景 众所周知,在使用limit分页过程中,随着前端传过来的PageSize越来越大,查询速度会越来越慢.那有什么优化的办法呢? 本文将通过百万数据表进行演示和优化, 欲知详情,请看下文分解. lim ...

最新文章

  1. sql查询返回xml数据之应用【转载】
  2. 菜鸟教程:C++ 的关键字(保留字)完整介绍
  3. 库存管理-历史库存和收发存系列-俄罗斯库存报表J3RFLVMOBVED1
  4. 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
  5. objective-c 中代码块(blocks)
  6. 轩逸车联网功能怎么用_手机上面的NFC功能怎么用的
  7. 主域控宕机无法恢复后,如何配置辅助域控继续工作
  8. sudo apt-get常用命令
  9. SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length
  10. OpenDDS 编译
  11. CRMEB/V4.4标准版打通版商城源码小程序公众号H5+App商城源码
  12. python余弦定理_基于Python计算气弹簧选型
  13. python qqbot实现qq聊天机器人_Python QQBot库的QQ聊天机器人
  14. 轻松访问Google Chrome浏览器中的浏览历史记录
  15. 技术人物:张亚勤-“智造中国”规划师(一)
  16. Truck History POJ - 1789 最小生成树Prim
  17. 1000w+条中国大陆企业工商注册信息数据集
  18. initramfs 在内核中的作用与实现
  19. 13位时间戳(单位为毫秒)转换为10位字符串(单位为秒)
  20. 如何选择适合你的兴趣爱好(四十二),风筝

热门文章

  1. iOS仿京东分类菜单之UICollectionView内容
  2. 关于css中列表(ul ol)存在默认间距的问题
  3. linux下led灯驱动程序
  4. CSV用excel打开乱码
  5. linux第一课历史与未来方向
  6. [设计原则] 为模块设计初始化和终止化函数
  7. 当前网页正在试图打开你的受信用站点列表中的站点.你想允许这样做吗?
  8. 秋招很倒霉,但最终还是触底反弹了
  9. 「leetcode」1356.根据数字二进制下1的数目排序【如何计算二进制中1的数量】详解!
  10. 巧用MacOS的勿扰模式,解决广告弹窗