ViewStub 简介

ViewStub是一个轻量级的不可见View,用于延迟加载布局,提高初始加载性能。在需要延时加载或根据条件显示/隐藏内容的场景中,ViewStub能有效减少资源消耗。尽管手机内存增大,但每个APP分配的内存仍然有限,善用ViewStub能显著提升APP性能。然而,ViewStub只能inflate一次,之后无法再次控制其指向的布局。
摘要由CSDN通过智能技术生成

在实际开发中,ViewStub 在提升用户体验和优化性能方面都是有一定作用的!
ViewStub就是一个宽高都为0的一个View,它默认是不可见的,只有通过调用setVisibility函数或者Inflate函数才会将其要装载的目标布局给加载出来。也就是页面默认是不加载ViewStub所指向的View的,而ViewStub本身是一个轻量级的View,占用资源非常小的控件。
这就为我们一开始加载页面的时候省出来了资源,从而提升性能!

还有在一些页面我们需要延时加载的内容,我们也可以使用ViewStub,比如我们电商平台的产品详情页面,它底部的相关产品推荐,这个我们刚进入产品详情页面完全可以先不加载它,等我们的详情页面加载出来了我们在使用ViewStub.inflate(),让其显示出来!这样就能提升我们一开始加载页面的速度和内存开支!

还有就是我们在一些页面是需要根据不同的情况显示和隐藏一些控件,比如还是我们的产品详情页面,有些产品是带有优惠券的,有些则是不带的,这个时候我们带有优惠券的就需要把优惠券显示出来!我们用ViewStub,页面开始是用不加载优惠券相应的控件的,当有优惠券时我们再去加载,这样也就节省了很多资源!

我们一个页面可能看不出来多大的差别,感觉现在手机内存也都大了,不在乎那么一点内存!可是开发中我们明确的知道我们手机上的每个APP分到的实际内存还是很有限的!我们要是每个页面都能少开支一些,我们的APP性能将提升很多!

而我们的ViewStub 其实很简单,也是希望大家能够熟悉它并使用它!
这里需要注意的是ViewStub只能Inflate一次,之后会被置空,所以之后ViewStub是没有办法控制它指向的layout的!

下面给大家看一个简单的例子:

主页面UI,两个ViewStub

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal">
    <ViewStub
        android:id="@+id/viewstub_text1"
        android:layout_width="match_parent"
        android:layout_height="
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值