笔记48 | Android性能优化之按需加载视图(三)

地址

csdn: http://blog.csdn.net/xiangyong_1521/article/details/78727363


目录

  • 前言
  • 定义 ViewStub
  • 载入 ViewStub Layout

前言

有时你的 Layout 会用到不怎么重用的复杂视图。不管它是列表项 细节,进度显示器,或是撤销时的提示信息,你可以仅在需要的时候载入它们,提高 UI 渲染速度。


定义 ViewStub

ViewStub

是一个轻量的视图,不需要大小信息,也不会在被加入的 Layout 中绘制任何东西。每个 ViewStub 只需要设置 android:layout属性来指定需要被 inflate 的 Layout 类型。

以下 ViewStub 是一个半透明的进度条覆盖层。功能上讲,它应该只在新的数据项被导入到应用程序时可见。

<ViewStub
    android: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" />

载入 ViewStub Layout

当你要载入用 ViewStub 声明的 Layout 时,要么用 setVisibility(View.VISIBLE) 设置它的可见性,要么调用其 inflate() 方法。

((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);

or

View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

Notes:inflate() 方法会在渲染完成后返回被 inflate 的视图,所以如果你需要和这个 Layout 交互的话, 你不需要再调用 findViewById() 去查找这个元素,。 一旦 ViewStub 可见或是被 inflate 了,ViewStub 就不再继续存在View的层级机构中了。取而代之的是被 inflate 的 Layout,其 id 是 ViewStub 上的 android:inflatedId 属性。(ViewStub 的 android:id 属性仅在 ViewStub 可见以前可用)

Notes:ViewStub 的一个缺陷是,它目前不支持使用标签的 Layout 。


原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2017-12-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏非著名程序员

教你如何用 RecyclerView 做一个好用的轮播图

引子 一般情况下,我们手机 App 上轮播图一般都是几张图来回循环,最多也就10几张,一般都是在10张以内的轮播。所以我们一般可能都是自己写,还有可能用到了别人...

2115
来自专栏水击三千

Android学习之菜单

android中包含多种菜单,本例带来的是选项菜单和上下文菜单。 1.选项菜单 在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可。...

2916
来自专栏james大数据架构

android 中resources管理

主要存在于res/value文件夹中 定义: dimen.xml:主要用于设置像素默认值 <resources> res/values/dimens.xml...

2058
来自专栏Sorrower的专栏

界面无小事(九): 做个好看的伸缩头部

1292
来自专栏xx_Cc的学习总结专栏

六天完成一个简单iOS App - 第二天

2855
来自专栏Android机动车

Kotlin超简单实现StepView

支持时间轴和StepView,三种布局,支持水平布局,垂直布局和自定义布局,截图如下

1142
来自专栏Android-薛之涛

Android-ConstraintLayout详解(下)

我们接着上一篇说一说ConstraintLayout的其他属性,如果没看过上一篇:Android-ConstraintLayout详解 先罗列一下此次的会议内...

973
来自专栏学海无涯

Android开发之DrawerLayout实现抽屉效果

谷歌官方推出了一种侧滑菜单的实现方式(抽屉效果),即 DrawerLayout,这个类是在Support Library里的,需要加上android-suppo...

7616
来自专栏Android知识点总结

O2-开源框架使用之Picasso

1344
来自专栏非典型技术宅

断言和分段控制器1. 断言(Assertions)2. 分段控制器(UISegmentedControl)

883

扫码关注云+社区