Android布局优化之ViewStub的使用

作者: 安卓小煜 | 来源:发表于2018-04-22 13:50 被阅读39次

背景

最近刚好有看到ViewStub,因此根据个人理解记录下笔记。

ViewStub是Android布局优化的方式之一。

它可以让部分布局延迟加载,从而提高页面渲染速度。

场景

因为ViewStub是用于延迟加载使用,因此适用场景是一些不需要即时展示的页面。

举个例子,大家都用过登录页面。

假设第一次你输入登录用户名和密码错误时,第二次输入会要求你输入验证码。

这里的验证码第一次渲染页面时不需要显示,因此可以适用延迟加载场景。

而像用户名和密码输入框因为第一次显示的时候就要求展示在页面上,因此不适合使用ViewStub。

ViewStub和android:visibility="gone"区别

可能大家会好奇,如果ViewStub的作用是延迟加载。

那么如果我把要延迟加载的布局visibility设置为gone不是一样的效果吗?

表面上看起来效果是一样的,但是区别在哪呢?

设置某个布局模块为gone,但是系统在渲染该布局时还是会去计算这个布局模块的宽高等属性,还是会把它添加到布局树上。因此这个布局模块还是会占有渲染布局的部分时间。

而把该布局模块放在ViewStub,系统在渲染该布局时并不会去理ViewStub节点,因此可以节省渲染布局模块的时间。只有当需要展示时,才会去渲染。

ViewStub使用

正如我们之前所说的,ViewStub下的布局是不会展示的。

那么怎么让它展示呢?

  1. 获得ViewStub组件。
    跟其他组件一样通过findViewById(R.id.view_stub)获得mViewStub;

  2. 显示。
    有两种方式:

  • 直接调用
    mViewStub.setVisibility(View.VISIBLE);

  • 通过inflate
    mStubView = mViewStub.inflate();

两种方式的区别在于通过inflate可以返回引用的布局View,可以通过该引用获得布局View的其他组件。

NOTE

inflate只能调用一次,不能调用多次,否则会报错。

因为设置ViewStub可见后,ViewStub就不复存在了。

具体示例Demo可以看github Demo

相关文章

  • 安卓性能优化

    Android的性能优化方法 1. 布局优化 使用 标签、标签、 控件 复杂布局...

  • ViewStub的实现深入解析

    布局优化是性能优化中一项不可缺失的工作,而ViewStub是性能布局优化中很有必要的一项,使用ViewStub可以...

  • Android布局优化之ViewStub的使用

    背景 最近刚好有看到ViewStub,因此根据个人理解记录下笔记。 ViewStub是Android布局优化的方式...

  • Android-性能优化

    应用体验-布局优化 使用include布局、merge标签、ViewStub视图可以使用HierarchyView...

  • Android技巧 - 收藏集 - 掘金

    Android 中使用 ViewStub 提高布局性能 - Android - 掘金在 Android 开发中, ...

  • Android 知识

    Android 知识随笔 1.布局优化include merge viewstub 2视频播放流程 采集 —>处理...

  • android应用性能优化

    1. UI布局的优化 使用include,merge,ViewStub标签优化布局 尽量不存在冗余嵌套及过于复杂的...

  • 第十五章 Android性能优化

    1.布局优化 -减少布局嵌套-使用 、标签-使用ViewStub,按需加载,需要时才将布局加载进内存...

  • Android性能优化

    布局优化 减少布局层级,使用ViewStub提高显示速度,布局复用,尽可能减少使用warp_content,删除空...

  • 基本性能优化

    布局优化 避免过度绘制嵌套,导致16秒无法完成绘制 使用viewstub提高布局性能 内存优化 避免内存溢出和内存...

网友评论

    本文标题:Android布局优化之ViewStub的使用

    本文链接:https://www.haomeiwen.com/subject/rdzqlftx.html