Android布局优化--include, merge, viewStub

摘要:在布局优化中,Androi的官方提到了这三种布局、、,并介绍了这三种布局各有的优势,下面也是简单说一下他们的优势,以及怎么使用,记下来权当做笔记。

在布局优化中,Androi的官方提到了这三种布局<include />、<merge />、<ViewStub />,并介绍了这三种布局各有的优势,下面也是简单说一下他们的优势,以及怎么使用,记下来权当做笔记。

1、布局重用<include />

<include />标签能够重用布局文件,简单的使用如下:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”
    android:background="@color/app_bg"
    android:gravity="center_horizontal">
   
    <includelayout="@layout/titlebar"/>
   
    <TextViewandroid:layout_width=”match_parent”
              android:layout_height="wrap_content"
              android:text="@string/hello"
              android:padding="10dp"/>
   
    ...
   
</LinearLayout>

1)<include />标签可以使用单独的layout属性,这个也是必须使用的。

2)可以使用其他属性。<include />标签若指定了ID属性,而你的layout也定义了ID,则你的layout的ID会被覆盖,解决方案。

3)在include标签中所有的android:layout_*都是有效的,前提是必须要写layout_width和layout_height两个属性。

4)布局中可以包含两个相同的include标签,引用时可以使用如下方法解决(参考):

View bookmarks_container_2 = findViewById(R.id.bookmarks_favourite);
   
bookmarks_container_2.findViewById(R.id.bookmarks_list);

2、减少视图层级<merge />

<merge />标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。<merge />多用于替换FrameLayout或者当一个布局包含另一个时,<merge />标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用<merge />标签优化。

<mergexmlns:android="http://schemas.android.com/apk/res/android">
   
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/add"/>
   
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/delete"/>
   
</merge>

现在,当你添加该布局文件时(使用标签),系统忽略节点并且直接添加两个Button。

3、需要时使用<ViewStub />

<ViewStub />标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。各种不常用的布局想进度条、显示错误消息等可以使用<ViewStub />标签,以减少内存使用量,加快渲染速度。<ViewStub />是一个不可见的,大小为0的View。<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) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

当调用inflate()函数的时候,ViewStub被引用的资源替代,并且返回引用的view。这样程序可以直接得到引用的view而不用再次调用函数findViewById()来查找了。

注:ViewStub目前有个缺陷就是还不支持<merge />标签。


注意,当使用viewStub时,使用者可以覆盖viewStub所引用的layout里面的根view的id,和layrout属性。

Android-布局优化merge, viewStub, include总结 多层布局的嵌套会导致页面加载慢,影响用户的体验,今天我们就来学学如何使用 include,merge及viewStub。 1.include include便于对相同视图内容进行统一的控制管理,提高布局重用性,以标题栏为例,我们先定义一个通用的标题栏,相关代码如下: commont_title <RelativeLayout xmlns:android="http://schemas... 阅读详情

相关推荐

SDRAM控制器——添加读写FIFO

用FIFO实现数据缓存

H19981118的博客 2628

Android布局中的include、merge 、ViewStub

在布局优化中,Androi的官方提到了这三种布局include、merge 、ViewStub。

学习的最佳方式,就是把它写下来! 791

域控制器迁移后NETLOGON共享丢失的修复指南

本文详细解析了在Windows域控制器迁移后NETLOGON共享丢失的故障现象与修复方法。通过使用Dcdiag工具诊断,定位注册表键值SysVolReady异常及SCRIPTS目录缺失等核心原因,并提供了修改注册表、创建目录、重启Netlogon服务等逐步修复指南,帮助管理员快速恢复域用户登录功能,确保业务连续性。

weixin_29245767的博客 89

android include 和 merge 区别

include>标签用于重用整个布局文件。标签用于合并布局,去除多余的根视图,从而优化布局层次结构。希望这些示例和解释能帮助你理解这两个标签的用途和使用方法。如果有更多问题,请随时告诉我!

阿饱同学 835

qcom bypass node介绍

介绍qcom bypass node,以及如何让其生效

haodada1226的博客 2045

HOPE:基于强化学习的混合策略路径规划器,适用于多样化停车场景

本文提出了一种混合策略路径规划器(HOPE),用于解决自动停车中的路径规划问题。HOPE结合了强化学习(RL)和Reeds-Shepp(RS)曲线,通过动作掩码机制引导RL智能体的探索,并利用Transformer融合环境感知信息与掩码。该方法在多样且复杂的停车场景中实现了超过97%的成功率,并通过真实实验验证了其泛化能力。此外,本文还提出了基于空间与障碍物分布的停车场景难度分级标准,进一步提升了训练与评估的效率。实验结果表明,HOPE在规划成功率和跨场景泛化能力上均优于传统的基于规则算法和朴素强化学习方法

weixin_42783201的博客 1466

Android merge

Android merge介绍

YK 2812

YOLOv8 更换损失函数DIoU、EIoU、GIoU...Inner-IoU...

介绍了一些损失函数,并将其应用到yolov8训练中

分享一些自己改进代码的实例 888

Android随笔-include、merge、ViewStub

Android随笔-merge、include、viewStub

古典码 2945

【tessy】软件环境配置:Keil C51 Keil uVision UVSC (Default)

本文详细说明了tessy软件如何配置【Keil C51 Keil uVision UVSC (Default)】环境,具体操作步骤和注意事项

qq_37282365的博客 601

IM 系统设计:仿微信架构,Netty + Protobuf + WebSocket 如何支撑百万级长连接?

相比 JSON,Protobuf 的体积通常只有前者的 1/5 到 1/10,且解析速度快一个数量级。// 消息类型:1-登录,2-心跳,3-单聊,4-群聊,5-ACK// 发送方ID// 接收方ID// 消息内容// 时间戳// 消息唯一ID,用于去重和ACK。

BUG猿的博客 1381

Android布局优化 之 <merge>标签使用详解

1.为什么要使用 2.什么情况下使用 3.如何使用

xiaoyinliuyun的专栏 2万+

用一张分析型 CDS Query 看清争议案件新增与结案节奏:C_OpenClosedDisputeCase 深度解读

应收账款争议管理中的关键CDS视图分析 摘要:C_OpenClosedDisputeCase是SAP系统中用于监控应收账款争议案件的重要CDS视图,提供三个时间窗口(当日、近5天、当月)的新增与结案数据。该视图通过"创建vs解决"的净变化指标,帮助财务团队实时掌握争议管理趋势,特别适用于多币种跨国企业的现金流管理。其核心价值在于将争议管理从被动"救火"转变为可量化运营,通过统一汇率换算和关键日期参数,为管理层提供标准化的运营仪表盘。视图采用特权访问模式,需通过上层应用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 123

【Android】布局优化—include,merge,ViewStub的使用方法

在Android应用开发中,布局是用户界面的基础。一个高效的布局不仅能提升用户体验,还能显著改善应用的性能。随着应用功能的复杂性增加,布局的优化变得尤为重要。优化布局能够减少渲染时间,提高响应速度,从而让用户获得更流畅的体验。

2301_79977698的博客 1780

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android布局优化:include 、merge、ViewStub标签详解

前言 在日常开发中,一个项目里可能会有很多相似的布局,如果我们每一个XML文件都写一次,不说麻烦,代码也显得冗余,而且可读性也很差。这时候我们可以将相同的布局提取出来重复使用。 Tips 使用Android Studio可以直接在布局文件对应控件:右键 -> Refactor -> Extract -> Style 抽取样式右键 -> Refactor -&g...

weixin_42046829的博客 850

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android布局优化三剑客:include+merge+ViewStub

现在我们就用include标签,将其添加到ViewOptimizationActivity的布局中:include标签的使用没错,include的使用就是这么简单,只需指明要包含的布局id就行。

2501_90209695的博客 1003

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android布局优化:include,merge,viewStub总结

inlucde 为了解决重复定义的布局问题,可以多处复用布局 用法以及注意点 1.一个xml布局文件有多个include标签需要设置ID,才能找到相应子View的控件,否则只能找到第一个include的layout布局,以及该布局的控件 2.当include布局设置了id的同时,导入的布局也设置了id,此时应该用导入的布局设置的id,否则会报空指针,通过查看源码知道,导入的布局文件都会调用LayoutInflater的inflate方法,此方法中可以清楚看到一个TAG_INCLUDEDE的标签

u014646618的博客 370

Android布局优化--include 、merge、ViewStub

include用法: 把通用的视图提取到一个单独的layout文件中,使用<include>标签在需要使用的其他layout布局文件中加载进来,例子:App导航栏等。对相同视图内容进行统一的控制管理,提高布局重用性。 1、抽取布局(标题栏): <LinearLayout xmlns:android="http://schemas.android.com/apk...

飞跃博客 381

Android布局优化之include、ViewStub、merge标签

待编写

qq_46269365的博客 669

Android性能优化:这是一份详细的布局优化指南(含标签Include、Viewstub、Merge讲解)

前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的布局优化,希望你们会喜欢。 #目录 1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. 如何影响性能 布局影响Android性能的实质:页面的测量 & 绘制时间 1个页面通过递归 完成测量 & 绘制过程 = measure、layout 过程 3. 优化思路 优化方向:布局性能、布局层级、布局复用性 和 测量 & 绘制时间 具体如下 针对 页面..

Carson带你学Android 3755

Android布局优化之 ViewStub 、include、merge 使用及源码分析

我们先看一个Activity的页面布局结构: 从上可以看出平常咱们实际绘制的页面布局其实是处在第3层。 一、include include标签就是为了解决重复定义相同布局的问题。 例如页面中常用到的标题栏,它几乎是用在所有页面的顶部,在不使用include的情况下咱们需要在每个界面加标题栏的xml代码,显得很繁琐,这时候就会想到封装、复用,include标签就应运而生了,我们只需要...

huch的博客 955

Android 布局优化处理(含 include、Viewstub、merge)

下面是一位才疏学浅的博主对布局优化的理解和认识(更多好内容戳下面:https://blog.youkuaiyun.com/wuqingsen1): 1.下面先讲解  include、Viewstub、merge 的基本用法,如果了解,可以直接看下面的布局优化。 1.1 include 用法(一般用于复用的布局,比如每个界面的标题等,从而实现布局模块化)。    代码下载:https://download...

wuqingsen1的博客 588

Android布局优化之include、merge、ViewStub的使用

一、<include/> 标签在布局优化中是使用最多的一个标签了,它就是为了解决重复定义布局的问题。标签就相当于C、C++中的include头文件一样,把一些常用的底层的API封装起来,需要的时候引入即可。在一些开源的J2EE中许多XML配置文件也都会使用标签,将多个配置文件组合成为一个更为复杂的配置文件,如最常见的S2SH。 在以前Android开发中,由于ActionBar设计上的...

Android_JIE的博客 434

Android布局优化之include、merge 、ViewStub使用

Android布局优化之include、merge 、ViewStub使用

zhukui66的专栏 2403

Android布局优化-merge, viewStub, include总结

原文链接:https://www.jianshu.com/p/a4eee43aa60e https://www.jianshu.com/p/48a2fbf75954 一、 ViewStub标签的使用姿势 步骤一:定义需要懒加载的布局 test.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l

u013750244的博客 371
上一篇: movebase导航和地图数据的使用 - 12 为传感器增加一个layer
csshell2002
博客等级 码龄11年 30粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值