1、减少布局层级

Google在API文档中建议View树的高度不宜超过10层。

以前我们用Eclipse写代码时,自动生成的模板是以LinearLayout为根节点的,但是后面变成了RelativeLayout为根节点。

RelativeLayout可以让视图树的层级少,但是LinearLayout的测量效率要高。

如果使用RelativeLayout,需要尽量避免嵌套;如果使用LinearLayout,保证层级不能太深。

2、<include>标签

<include> 标签并不能减少布局层级,只能增加代码可读性和布局的复用性。

3、<merge>标签

Q:使用merge标签有哪些优点?

<merge />标签可以用于减少View树的层次来优化Android的布局,使用<include>包含布局的时候,系统会自动忽略merge层级。

Q:merge标签有什么缺点么?

1.<merge/>只能作为XML布局的根标签使用。
2.当Inflate以<merge />开头的布局文件时,必须指定一个父ViewGroup,并且必须设定attachToRoot为true。
View android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)

Q:什么情况考虑使用Merge标签?

1.子视图不需要指定任何针对父视图的布局属性,例子中TextView仅仅需要直接添加到父视图上用于显示就行。
2.假如需要在LinearLayout里面嵌入一个布局(或者视图),而恰恰这个布局(或者视图)的根节点也是LinearLayout,这样就多了一层没有用的嵌套,无疑这样只会拖慢程序速度。而这个时候如果我们使用merge根标签就可以避免那样的问题。

merge标签的使用:

<merge xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="merge标签" />
</merge>

4、<ViewStub>标签

Q:使用ViewStub标签有哪些优点?

<ViewStub>标签可以实现对一个view进行延迟加载,布局在初始化加载不需要显示出来,只有在特点情况才显示出来。

Q:使用ViewStub有啥需要注意的吗?

1.在要渲染的布局中并不支持<merge/>标签。
2.ViewStub.infalte方法不能调用两次,否者会出现异常。(因为一旦ViewStub visible/inflated,则ViewStub将从视图框架中移除,其id也会失效)

Q:ViewStub标签和View.GONE的区别?

ViewStub标签只有在显示时才去渲染整个布局,但是View.GONE在初始化布局时就已经添加在布局树上了。

使用方法:

((ViewStub) findViewById(R.id.viewstub)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.viewstub)).inflate();

作者:假装是程序猿丶
链接:https://www.jianshu.com/p/a44be4524626
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Android优化五:布局优化相关推荐

  1. Android系统性能优化(69)---含内存优化、布局优化

    Android性能优化:含内存优化.布局优化 前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存率的关键 本文全面讲解性能优 ...

  2. Android简单的布局优化

    简单的布局优化 Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,那么整个过程如果保证在16ms以内就能达到一个流畅的画面. 检测: 1. 设置 -> 开发者选项 -> ...

  3. Android:最全面详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)

    前言:佛教中有一句话:初学者的心态,拥有初学者心态是件了不起的事情.真正的大师永远怀有一颗学徒的心. 一.概述 在Android中,性能优化是细分领域中最难且也是知识面涉及最深和最广的方向之一. 更快 ...

  4. Android性能优化:布局优化 详细解析(含include、ViewStub、merge讲解 )

    1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. 如何影响性能 布局影响Android性能的实质:页面的测量 & 绘制时间 1个页面通过递归 完成测量 & ...

  5. android布局时长分析,Android性能优化:布局优化 详细解析(含、、讲解 )

    前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的布局优化,希望你们会喜欢. 目录 1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. ...

  6. Android 卡顿优化 3 布局优化 工具 Hierarchy Viewer

    欲善其事, 先利其器. 分析布局, 就不得不用到Hierarchy Viewer了. 本文工具使用皆以GithubApp的详情界面RepoDetailActivity为例说明. 为了不影响阅读体验, ...

  7. Android性能优化之布局优化篇

    2019独角兽企业重金招聘Python工程师标准>>> 怎样才能写出优秀的Android App,是每一个程序员追求的目标.那么怎么才能写出一个优秀的App呢?相信很多初学者也会有这 ...

  8. App性能优化(布局优化,线程优化,app瘦身优化,页面切换优化,App启动优化,内存优化)

    Android APP性能优化(最新总结) 在目前Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性.复杂度也随之增长,这样使得UI布局的优化,显得至关重要 ...

  9. 网页优化(布局优化、图片优化)

    为什么页面优化? 页面扩展灵活 提高页面的加载速度 提高用户的体验 布局优化-高度自适应 自适应 1.宽高不写 注意:当子元素浮动时,父元素不写高度会引起高度塌陷 2.宽高写%单位 3.使用max-w ...

  10. match占内存 android,Android性能优化之布局优化

    管你APP采用了多么高大上的技术,做出了多么炫酷的动画,如果使用起来体验不好,各种花式卡顿,内存占用大得一批的话,估计很少有人愿意愉快地使用.因此我们不能只考虑如何实现功能效果,还必须要重视性能的优化 ...

最新文章

  1. 转《刘润的数字化家庭》
  2. 【实用/转载】ALV OO Container屏幕自适应设置
  3. cmd 关闭进程及查看本机端口
  4. Groovy 设计模式 -- 借贷
  5. Oracle的解惑一二to date 与24小时制表示法及mm分钟的显示
  6. 从头搭建一个深度学习框架
  7. 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解
  8. BZOJ2342 Shoi2011 双倍回文 【Manacher】
  9. web前端项目实例网站_web前端网站性能优化方案
  10. Twine:Facebook 集群调度管理系统
  11. cmd 卸载mysql_彻底卸载MySQL图文教程
  12. kali linux 2020.4 自带浏览器英文改中文
  13. 2021年江苏省教学成果奖(高等教育类)拟获奖项目名单
  14. c mysql trans_MYSQL STRICT_TRANS_TABLES使用图解教程
  15. 智慧遂川城管建设项目-容灾备份一体机
  16. Java进阶之CollectionsSet接口Map接口
  17. python椭圆曲线加密算法_ECC椭圆曲线加密学习笔记
  18. 马尔萨斯人口论与数学模型
  19. python保存plot图片_Matplotlib savefig只保存图像,不保存行
  20. 使用JSSDK实现网站的QQ登录

热门文章

  1. benchmark mysql_程序员的MySQL手册(二): 监控与benchmark
  2. opencv 调整窗口大小_opencv改变imshow窗口大小,窗口位置的方法
  3. 高考成绩2021年怎么查询,2021高考成绩怎么查询 2021年各省市高考成绩查询时间介绍...
  4. java web 总结,Java Web 相关概念经典总结(一)
  5. centos重启网络失败Job for network.service failed,ping不通网络
  6. js php 获取时间倒计时_,js实现倒计时及时间对象
  7. python面向对象大段代码_python面向对象部分简单整理
  8. python列表输入不加逗号_用python打印不带括号或逗号的列表
  9. 简述用决策表设计测试用例的步骤_决策表快速入门
  10. HALCON表面划痕检测