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

相关文章

来自专栏眯眯眼猫头鹰的小树杈

固定窗口和滑动窗口算法了解一下

最近在参与一个识别热点数据的需求开发。其中涉及了限流算法相关的内容。所以这里记录一下自己了解的各种限流算法,以及各个限流算法的实现。

883
来自专栏A周立SpringCloud

实用技巧:Hystrix传播ThreadLocal对象(两种方案)

目前,Spring Cloud已在南京公司推广开来,不仅如此,深圳那边近期也要基于Spring Cloud新开微服务了。 于是,领导要求我出一套基于Spring...

5335
来自专栏小鄧子的技术博客专栏

About ExecutorService(1),Future&FutureTask

上一份工作告一段落,本想给自己放个假,放松一下一直处于疲惫的身心,无奈,打球伤了脚趾,不仅旅游的计划泡汤了,连袜子都不能长时间穿,那就索性坐在电脑前,写写博客,...

882
来自专栏Android 开发者

ViewModel 和 LiveData:为设计模式打 Call 还是唱反调?

2083
来自专栏郭耀华‘s Blog

Android中级教程之----Log详解(Log.v,Log.d,Log.i,Log.w,Log.e)

在Android群里,经常会有人问我,Android Log是怎么用的,今天我就把从网上以及SDK里东拼西凑过来,让大家先一睹为快,希望对大家入门Androi...

34310
来自专栏Windows Community

Extensions in UWP Community Toolkit - WebViewExtensions

概述 UWP Community Toolkit Extensions 中有一个为 WebView 提供的扩展 - WebViewExtensions,本篇我们...

3049
来自专栏Vamei实验室

被解放的姜戈05 黑面管家

Django提供一个管理数据库的app,即django.contrib.admin。这是Django最方便的功能之一。通过该app,我们可以直接经由web页面,...

1919
来自专栏james大数据架构

Android的UI设计与后台线程交互

本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行。本文还将阐述一些用户界面(...

1895
来自专栏difcareer的技术笔记

Android6.0 DeviceIdle服务分析状态切换总结

Android6.0以后引入了Doze和Standby省电模式,看了下源码,主要体现在DeviceIdle服务中。

986
来自专栏吴小龙同學

android获取 res 中的资源

1374

扫码关注云+社区