本文翻译自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. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断

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

  2. C++性能优化系列——3D高斯核卷积计算(三)IPP计算一维卷积

    因为高斯卷积核计算具有可分离的性质,其计算过程的复杂度比不可分离的卷积要高,因此直接对比自己实现的3D高斯卷积与高性能库IPP的执行情况是没意义的.但是,只进行一维卷积,对比两个版本是有参考价值的.本 ...

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

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

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

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

  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. 性能优化系列:每个程序员都应该知道的数字

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

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

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

  10. ORACLE SQL性能优化系列 (一) black_snai

    2019独角兽企业重金招聘Python工程师标准>>> ORACLE SQL性能优化系列 (一) 原创 2003年07月21日 18:34:00 标签: oracle / sql / ...

最新文章

  1. 编程方式刷新Squid缓存服务器的五种方法
  2. 年仅 16 岁的黑客少年,竟是搅乱 IT 巨头的幕后主使?
  3. 计算机组成与原理如何书写DEC微指令,计算机组成原理课程设计16位机微程序控制器指令系统设计与实现.doc...
  4. 析构设置为虚函数的原因
  5. mysql、clickhouse读写分离性能测试
  6. 索佳电子水准数据传输软件_183家软件服务行业上市公司完整名单及分析
  7. Request_获取请求头数据
  8. DOS命令行数据乱码解决
  9. 【elasticsearch】Elasticsearch 空值处理实战
  10. C++基础::为什么不能cout一个string?
  11. 机器人教练走进驾校_“机器人教练”走进镇江驾校
  12. redis的hscan命令
  13. Google谷歌新手SEO优化教程篇【1】
  14. rust下沉试密室怎么用_魔兽7.1考古任务黑鸦堡垒密室在哪 钥匙使用消失二楼铁门怎么开...
  15. Unity3d:UGUI源码,Rebuild优化
  16. CSV文件编辑器——Modern CSV for mac
  17. 「经济读物」小狗钱钱
  18. [收藏]一些电平转换方法
  19. 支付宝小程序手机相册上传多个图片踩坑
  20. js获取当前日期的下周一

热门文章

  1. php分享二十五:跨域请求
  2. Aix5~6小机运维
  3. 百度网盘图片直链的php解析代码
  4. java 进程和线程
  5. Android 4.0 API新特性之OVERVIEW
  6. 曙光:卖市场上没有的产品
  7. 「leetcode」78. 子集【回溯算法】详解!
  8. UNIX环境高级编程之第3章:文件I/O
  9. Photoshop 2020 for Mac(PS 2020)中英双版
  10. Apple ID 被盗用的 5 个征兆,遇到其中一种,建议赶快改密码