笔记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 条评论
登录 后参与评论

相关文章

来自专栏吴小龙同學

Android Creating Custom Views

2306
来自专栏Android机动车

Kotlin超简单实现StepView

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

962
来自专栏水击三千

Android学习之菜单

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

2716
来自专栏林德熙的博客

win10 UWP ListView

如果发现 UWP ListView 横向没有滚动条,可以使用 ScrollViewer 添加

412
来自专栏Sorrower的专栏

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

892
来自专栏非典型技术宅

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

863
来自专栏三流程序员的挣扎

Android 动画总结(2) - 帧动画

Frame Animation,也叫 Drawable Animation,原理就类似视频快速播放一帧一帧的图片。一般场景下很少使用,工作中遇到的是有时会有背景...

1002
来自专栏Windows Community

Windows 8.1 应用再出发 (WinJS) - 几种新增控件(2)

上篇我们介绍了Windows 8.1 和 WinJS 中新增控件中的 AppBarCommand、BackButton、Hub、ItemContainer,本篇...

3066
来自专栏向治洪

React Native导航器之react-navigation使用

在上一节Navigation组件,我们使用系统提供的导航组件做了一个跳转的例子,不过其实战能力不强,这里推荐一个超牛逼的第三方库:react-navigatio...

1.6K7
来自专栏james大数据架构

android 中resources管理

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

1978

扫码关注云+社区