关于Android布局优化(二)

Android绘制优化(二)布局优化 我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升。当然这只是布局优化的一方面,那么如何来进行布局的分析和优化呢?本篇文章会给你一个满意的答案。 阅读详情

使用< ViewStub>实现View的延迟加载

之前说道可以使用< include>标签来引用布局,除此之外还可以< ViewStub>标签来实现对View的引用和延迟加载。

实例:

<ViewStub
    android:id="@+id/not_show"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout="@layout/is_show"/>

is_show就是引用的布局,默认是不显示的,而且大小是0
那怎么显示这个布局呢?
- 首先,需要通过findViewById()找到< ViewStub>

mViewStub = (ViewStub)findViewById(R.id.not_show);
  • 然后使用inflate方法显示引用的View
View showView = mViewStub.inflate();

或者使用

mShowView.setVisibility(View.VISIBLE);//显示引用的布局
  • 之后就可以使用shouView.findViewById()找到引用布局中的组件了

注意:

  • 当< ViewStub>不可见时,它的大小为0;
  • 当< ViewStub>设置为可见或者使用了inflate后,它就不存在了,取而代之的是被inflate的布局,并且会使用< ViewStub>中通过android:inflateId指定的ID给该布局设置ID,所以两次调用inflate会报错。

有人会问这不是很View.GONE的效果差不多吗?
二者的区别是:
< ViewStub>在初始时不显示,只有在显示的时候才会渲染布局。
而View.GONE在初始布局树的时候就已经添加到布局树上了。
所以比较起来,< ViewStub>有更高的效率。

关于Android的布局优化先写到这里,以后有新的了解再补充。
有问题欢迎提问。
也可以加“Android开发经验交流”群: 454430053

用ESP32-S3+OV2640摄像头+ILI9488屏,DIY一个能联网的智能猫眼(附完整代码) 本文详细介绍了如何利用ESP32-S3微控制器搭配OV2640摄像头和ILI9488显示屏,DIY一个功能强大的智能猫眼系统。从硬件选型、电路设计到软件开发,提供了完整的解决方案和优化技巧,包括图像采集显示、WiFi远程访问及低功耗设计,适合智能家居爱好者动手实践。 阅读详情

相关推荐

GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

WIN32;_DEBUG;_CONSOLE;O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3。

qq_43381998的博客 8246

用LightGBM预测《英雄联盟》胜负:一份给游戏数据分析师的实战指南(附完整代码)

本文详细介绍了如何利用LightGBM机器学习框架预测《英雄联盟》游戏胜负,为游戏数据分析师提供了一份实战指南。通过数据清洗、特征工程、模型调优和结果解读,完整展示了从原始数据到预测模型的全流程。文章特别强调了游戏特有数据的处理技巧和模型优化策略,帮助读者构建高效的分类预测模型,提升电竞数据分析能力。

weixin_30367873的博客 341

【深度学习】通俗易懂讲解循环神经网络LSTM

目录 1、循环神经网络(Recurrent Neural Networks) 2、长依赖存在的问题 3、LSTM 网络 4、LSTMs的核心思想 5、一步一步理解LSTM 6、LSTM的变种 7、总结 1、循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。...

Nieson2012的专栏 2728

Android之Inflate()方法用途

Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能。最近做的一个项目就是这一点让我迷茫了好几天。 android上还有一个与Inflate()类似功能的方法叫findViewById(),二者有时均可使用,但也有区别 区别在于: 如果你的Activity里用到别的layout,比如对话框layout,你还要设置这个layout上的其他组...

sabolasi 946

别再只看读写速度了!聊聊手机闪存eMMC、UFS3.1和SSD背后的功耗与体积玄学

本文深入探讨手机闪存技术eMMC、UFS3.1和SSD在功耗与体积设计上的关键差异。通过对比接口技术、封装工艺和温度管理,揭示移动存储如何在有限空间内平衡性能与能效,为消费者提供选购参考。重点关注UFS3.1的差分信号设计和全双工架构带来的显著优势。

weixin_27061475的博客 444

开启虚拟人物互动新时代:探索相芯Avatar SDK驱动功能(Android)

相芯SDK提供了男孩和女孩Avatar驱动模型,这些模型具备半身驱动和全身驱动的功能,使得虚拟角色能够根据用户的面部表情和动作实时模仿和响应。半身驱动功能: 相芯SDK的男孩和女孩Avatar驱动模型具备上身驱动功能,即能够通过用户的面部表情和动作来驱动虚拟角色的上半身行为。这意味着用户的面部表情、头部转动和上半身姿态等动作可以直接映射到虚拟角色上,使得虚拟角色能够栩栩如生地模仿用户的动作。例如,用户微笑时,虚拟角色会展现出笑容;用户转动头部时,虚拟角色也会相应地转动头部。

Faceunity2023的博客 631

使用 View.inflate 时产生 "找不到符号" 或者 "找不到ID" 的错误

因为引用的 layout 的 xml 文件名包含了大写字母或者特殊符号! 导致出现这个错误. 改成小写的标准文件名即可.

geekqian的博客 1300

告别抓瞎!手把手教你用Keysight Infinium和M8040完成PCIe 5.0 TX/RX信号完整性测试

本文详细介绍了如何使用Keysight Infinium示波器和M8040误码仪完成PCIe 5.0 TX/RX信号完整性测试。从测试前的设备准备、软件配置到具体的TX信号测试步骤和RX容限测试实战,提供了全面的操作指南和常见问题解决方案,帮助工程师高效完成PCIe 5.0合规性测试。

weixin_30911451的博客 503

Android中Inflate()常见用法说明

nflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能。最近做的一个项目就是这一点让我迷茫了好几天。 android上还有一个与Inflate()类似功能的方法叫findViewById(),二者有时均可使用,但也有区别 区别在于: 如果你的Activity里用到别的layout,比如对话框layout,你还要设置这个layo

myKernel 1955

Quuppa 如何引领蓝牙 ® 定位服务的全新发展方向

我们最优质的客户,是那些对其他实时定位系统(RTLS)的承诺感到失望、转而寻求 “能覆盖全业务场景的更广泛赋能技术” 的客户 —— 前文提到的消防车制造商就是典型案例:他们尝试并通过 Quuppa 的蓝牙方案取得了成功。我们希望业务合作伙伴(如系统集成商、解决方案提供商)能充分利用 Quuppa 智能定位系统的功能,为客户提供专属解决方案:无论是追踪微型标签、实现未来移动设备的 AoD 功能,还是基于 RSSI 的简单信标(信标作为物联网网关),这些功能都能让同一套 Quuppa 系统支持广泛的用例。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 831

KEPServerEX 6 之 lot Gateway MQTT Clinet 配置使用方式

IoT Gateway即Internet of Things Gateway物联网网关。 ---------------------------------------------------------------------------------- 方式:使用kepw的IOTGateway插件选择MQTTClient 解决:可以实现 KEPW 的Tag值 发送到 MQTT 服务器上 ----------------------------------------...

-雲飛兄-博客 6937

[Android]inflate方法与 findViewById 方法区别 | LayoutInflater的inflate函数用法详解

在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 具体作用: 1、对于一个没有被载入或者想要动态载入的界面,都需要...

ani40525的博客 233

Kafka 性能优化与常见问题排查

Kafka 的高性能依赖于合理的集群设计、参数优化与高效的监控体系。生产环境中,应重点关注I/O 瓶颈、分区规划、Producer/Consumer 参数调优,并通过监控与排查手段快速定位问题,从而保障 Kafka 在实时场景下的稳定运行。

X2829352498的博客 234

Android性能优化内存优化最详细最通俗讲解--安卓优化之路--布局优化控件优化(二)

在开发中布局是必不可少的,如果某个页面的页面相对复杂,就会引起过度绘制,加载是出现卡顿等。本篇就一部剧为切入点,主要说一下布局中的优化和某些控件的优化。RelativeLayout 和 LinearLayout对比之前看了一篇阿里的面试题。RelativeLayout 和 LinearLayout哪个效率高?为什么?就以这个问题开始本篇文章;1.RelativeLayout会让子View调用2次o...

u010354511的博客 438

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android UI进阶之布局的优化(二)

上一篇博客中介绍了布局优化的工具,层级观察器Hierarchy Viewer和布局优化分析工具layoutopt。如果看过上篇博客的会注意到,layoutopt工具提示可以将换成。其实标签在UI的结构优化中起着非常重要的作用,通过它可以删减多余的层级,达到优化UI的目的。   再来看一下上篇博客中使用的框架布局的树形结构图:      根节点和LinearLayout上面那个子树为andr

notice501的专栏 6064

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android内存优化(二)--布局优化

下面讲解下Android中的布局优化: 一.减少布局文件的层次 1.有RelativeLaout和LinearLayout选择LinearLayout 因为前者功能比较复杂,他的布局过程需要花费更多的CUP时间。记住了吗???----记住了... 2.LinearLayout嵌套时,能用FrageLayout替代,就用FrageLayout 因为ViewGroup的嵌套相当于增加

蝌蚪鱼 756

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android布局优化之merge(二)

Android布局优化之merge(二) merge减少视图层级     merge标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。merge多用于替换FrameLayout或者当一个布局包含另一个时,merge标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLa

Android开发-CXY的博客 1227

Android性能优化(二):UI布局优化

Android性能优化(二):UI布局优化 一、前言 人眼在看画面时,画面帧率高于每秒10-12帧(即每秒播放10-12张图片)的时候,就会认为是连贯的。一般电影的拍摄及播放帧数是每秒24帧。按道理说,画面帧率越高,用户体验越好,但这也代表着成本越高。 Android APP的性能标准是60fps,即1秒之内要达到60帧,这样我们就只有1000/60 = 16 毫秒的时间来处理任务。Android系统每隔16ms会发出一个VSYNC信号来触发UI的渲染。如果在16ms内不能完成UI的渲染,界面就出现卡顿的情

feng海涛 1533

安卓性能优化之布局优化(二)

大家可以先看看我的上篇文章介绍,接下来进入正题< include>标签的使用。 用法实例: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi

太阳在发光! 316

Android 性能优化之布局优化 (二)

Android 性能优化之布局优化 (二)

未来很长,但我会努力的走下去。 1727

android查看页面布局,Android布局优化(二)优雅获取界面布局耗时

如需转载请评论或简信,并注明出处,未经允许不得转载系列文章目录前言在了解了布局加载原理之后,我们就要开始布局优化实战了,但是为了能够判断哪些页面布局耗时较长,以及正确的衡量布局优化的成果,我们先来了解一些获取界面布局耗时的方法获取界面布局耗时基本方式布局的过程也就是setContentView的过程,所以想要获取布局耗时,我们最容易想到的就是下面这种方式,就是在setContentView的前后分...

weixin_42128676的博客 504

android 布局优化(二),merge标签

前一篇文章说了include标签的具体使用,现在我大致说一下merge标签的用法。merge在androidUI优化中也是非常重要的,它一般和include标签一起使用,include标签可能会导致多余的布局嵌套。具体可以看啊可能前面一篇关于include的用法详解。 这时使用merge标签,它可以删减多余的层级,优化UI。merge多用于替换FrameLayout或者当一个布局包含另一个

稀饭汉堡1995的博客 582

Android性能优化(二),Layout布局优化

原文地址:

可乐 2032
上一篇: 关于Android布局优化(一)
下一篇: 是时候复习一下Java基础了(一)
Z漫步
博客等级 码龄12年 42粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值