问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

布局优化方法

发布网友 发布时间:2022-11-19 17:20

我来回答

1个回答

热心网友 时间:2024-07-19 02:31

布局诱惑就是减少层级嵌套,减少overdraw。越简单越好
1、善用相对布局Relativelayout
在RelativeLayout和LinearLayout同时能够满足需求时,尽量使用RelativeLayout,因为可以通过扁平的RelativeLayout降低LinearLayout嵌套所产生布局树的层级。
可以使用AS自带工具协助优化布局---- Hierarchy View ,
用法:打开需要获取view层级的那个界面,然后依次点击菜单Tools -> Android -> Android Device Monitor。

2.2、merge标签
merge标签是作为include标签的一种辅助扩展来使用,它的主要作用是为了防止在引用布局文件时产生多余的布局嵌套。如:

这样提取出来后,使用上述的include标签引用布局时,就可以减少一个布局的嵌套了。而这一布局的子View的父层级直接是使用include引用的布局
2.3、viewstub标签
viewstub是view的子类。他是一个轻量级View, 隐藏的,没有尺寸的View。他可以用来在程序运行时简单的填充布局文件。同时他也有一个layout属性,当它隐藏时,不会显示任何布局和占据任何空间。当它显示时,就会用layout内的布局替代显示layout内的布局。

这里的ViewStub控件的layout指定为item_test_linear_layout。当点击button隐藏的时候不会显示item_test_linear_layout,而点击button显示的时候就会用item_test_linear_layout替代ViewStub。

3、使用最新布局ConstaintLayout
ConstraintLayout允许你在不适用任何嵌套的情况下创建大型而又复杂的布局。它与RelativeLayout非常相似,所有的view都依赖于兄弟控件和父控件的相对关系。
具体的使用可以查看相关的文档: ConstaintLayout使用
4、Android Lint工具寻求可能优化布局的层次
一些Lint规则如下:
1、使用组合控件: 包含了一个ImageView以及一个TextView控件的LinearLayout如果能够作为一个组合控件将会被更有效的处理。即自定义控件类型
2、合并作为根节点的帧布局(Framelayout) :如果一个帧布局是布局文件中的根节点,而且它没有背景图片或者padding等,更有效的方式是使用merge标签替换该Framelayout标签 。
3、无用的叶子节点:通常来说如果一个布局控件没有子视图或者背景图片,那么该布局控件是可以被移除(由于它处于 invisible状态)。
4、无用的父节点 :如果一个父视图即有子视图,但没有兄弟视图节点,该视图不是ScrollView控件或者根节点,并且它没有背景图片,也是可以被移除的,移除之后,该父视图的所有子视图都直接迁移至之前父视图的布局层次。同样能够使解析布局以及布局层次更有效。
5、过深的布局层次:内嵌过多的布局总是低效率的。考虑使用一些扁平的布局控件,例如 RelativeLayout、GridLayout ,来改善布局过程。默认最大的布局深度为10 。

文章出处: 更详细文章: Android性能优化之布局优化

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...经常感到孤独、万事无聊,请问怎样治疗孤独?谢谢! 移动号码不用了一段时间现在拨号显示空号要怎么激活 圣女小番茄简介 《一曲终人两散》最新txt全集下载 石膏几何体写生内容简介 石膏几何体内容简介 句子: We mustn't climb the trees.怎么填空? 市妇婴医院生产点样建档? 长治怀孕建档要准备什么材料呢? 工厂隔音房 11 帧布局——FrameLayout 儿童模特步怎么走视频教学、六个动作 精雕 电火花 镜面电火花哪个加工精度高? 我用的是西门子洗衣机WD7005㡳部漏水是什么原因? 工程中采取哪些措施可避免设置伸缩缝 对黑曲霉杀菌对数值为0.06 杀灭微生物对数值是3换算成百分百是多少 汽车消费进入淡季,三季度买车更有优势吗?看看4S店怎么想的 西安信耳云信息技术有限公司怎么样? Excel如何在一列单元格里删除指定的字 30a电流是多少瓦 30A等于多少瓦 怎么计算一个开关承受多大瓦数 冻结后会怎样 被盗了怎么办? 手机丢了 被盗了 我把微信冻结了 别人还能上我的微信吗 我的微信... 就是关于被盗冻结,怎么办? 被盗后冻结后有用吗? 国产rtk的价格,公路施工测量用 小小考勤怎么虚拟定位 康比特健肌粉是针对瘦人体质的吗? 控件有层叠的界面用帧布局比较好? 什么是塑胶地板 塑胶地板怎样解释 梦见一个人叫我去三生石那等他,但我找错地方,他很生气,代表什么?_百... 宝来油耗多少钱一公里,新宝来耗油量怎么样 宝来百公里油耗显示30升是怎么了 手机用re怎么增加ram的内存 小米手环6怎么开情侣模式 如何降低利润合理避税? 如何合理减少利润 请问广发e贷卡是虚拟卡吗? 电脑音箱经常发出嘟的警报声 为什么无源功放接音响会发出报警声 音箱有报警声时,机箱的小喇叭也跟着响 ...无线话筒连上音响说话声音大点音响就会出现警报音 ...电脑每隔十分钟左右就会从音箱里面发出警报的声音,类似于银行报警... 速冻黄金糕需要解冻再煎吗 屏幕发热严重怎么解决 私家车超过3年还可以办理营运吗 超过三年的车可以办营运证吗 三年以上的车可以办营运证吗