布局优化主要有以下方向:

  1. 减少布局层级
  2. 减少inflate布局的时间,原生加载XML的方式需要IO + 反射操作
  3. 减少过度绘制

可以使用工具:

  1. Layout Inspector:查看当前布局层级
  2. systrace:查看每一帧的时间和方法调用
  3. Choreographer:接收vsync垂直同步信号,可以用来计算帧率
  4. LayoutInflater.Factory/LayoutInflater.Factory2: 获取每个View创建的耗时

布局层级优化方式

  1. 使用ConstraintLayout
  2. 减少布局嵌套,层级不要太深,使用merge标签等

减少主线程布局创建时间的方式:

  1. 使用AsynclayoutInflater异步创建布局,这种方式是把耗时操作放到了子线程,但是会缺少TextView -> AppCompatTextView等兼容效果
  2. 使用纯代码的方式编写布局,new View(context),复杂、繁琐,不好维护
  3. 使用第三方库如X2C等,使用xml编写布局,在编译时转成Java代码,这种方式同样缺少TextView -> AppCompatTextView等兼容效果,且有些xml属性不支持
  4. 使用Jetpack Compose,声明式UI,应该是未来的趋势了

减少过度绘制

  1. 减少不必要的背景设置,减少复杂shape等
  2. 自定义View的时候,使用Canvas的clipRect方法避免绘制被遮盖的内容

Android布局优化相关推荐

  1. Android布局加载慢,Android布局优化(四)X2C — 提升布局加载速度200%

    系列文章 前言 在Android布局优化(一)从布局加载原理说起中我们说到了布局加载的两大性能瓶颈,通过IO操作将XML加载到内存中并进行解析和通过反射创建View.这里介绍一种避免运行时通过IO操作 ...

  2. 深入探索Android布局优化(上)

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. Android的绘制优化其实可以分为两个部分,即布局(UI)优化和卡顿优化,而布局优化的核心 ...

  3. android listview viewstub,Android布局优化之ViewStub控件

    ViewStub是Android布局优化中一个很不错的标签/控件,直接继承自View.虽然Android开发人员基本上都听说过,但是真正用的可能不多. ViewStub可以理解成一个非常轻量级的Vie ...

  4. 一篇文章搞定《Android布局优化》

    ------<一篇文章搞定Android布局优化> 前言 为什么要进行布局优化? Android绘制原理 双缓冲机制 布局加载原理 布局加载优化的一些方法介绍 AsyncLayoutInf ...

  5. android布局优化方案,Android启动优化-布局优化

    Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...

  6. android layout include merge,Android 布局优化之include与merge

    Android 官方提供了三个用来优化布局的标签,分别是include.merge与ViewStub,其中ViewStub是动态加载视图到内存,大家可以查阅:Android UI布局优化之ViewSt ...

  7. android 减少布局层级,Android 布局优化

    布局优化主要从以下几点进行着手 减少布局层次 和 复杂度 优化绘制流程 按需加载布局 减少布局层次 和 复杂度 首先我们可以通过以下工具分析界面布局的结构 查看布局树工具:Hierarchy View ...

  8. Android 布局优化

    在开发过程中我们经常说性能优化,但性能优化是一个比较宽泛的概念.在Android开发中性能优化可能包括:Java代码优化, 算法优化, SQLite优化, 布局优化等.那么这篇博客就来总结并分享下An ...

  9. android布局优化 工具,详解Android布局优化

    怎样才能写出优秀的Android App,是每一个程序员追求的目标.那么怎么才能写出一个优秀的App呢?相信很多初学者也会有这种迷茫.一句话来回答这个问题:细节很重要.今天我们就从最基础的XML布局来 ...

  10. Android成长日记-Android布局优化

    Android常用布局 1. LinearLayout(线性布局) 2. RelativeLayout(相对布局) 3. TableLayout(表格布局) 4. AbsoluteLayou(绝对布局 ...

最新文章

  1. Error: “incorrect inclusion of a cudart header file”
  2. Codeforces Round #324 (Div. 2) E. Anton and Ira 贪心
  3. GDCM:gdcm::PDFCodec的测试程序
  4. 计算机导论上机模拟,计算机导论模拟考试题6份完整版.doc
  5. linux常用命令和配置
  6. cs中ComboBox以设置DataSource方式填充后,清除选项出错
  7. js tooltip之wz_tooltip使用方法和参数备忘
  8. gitlab一键安装 笔记
  9. 自动化监控:主动发现自动注册
  10. 软考-网络工程师复习资料
  11. [4G5G专题-67]:RF层 - 天线常见指标与选型
  12. 微信抢红包插件xposed框架
  13. Java版本中最好用的网易云音乐、qq音乐api请求工具,你还在忙于如何使用java调音乐api?来看下这里的实现
  14. 2021年终总结与展望
  15. HTML5作业:实现小米官网静态首页
  16. 知我者谓我心忧,不知者谓我何求!
  17. 【视频教程】帝国CMS制作网站系列教程08—单页模板的制作
  18. Matlab使用图形平滑处理
  19. STL剖析(二):容器底层数据结构及常见用法
  20. 【LeetCode】两道贪心算法题目-455分发饼干,860柠檬水找零

热门文章

  1. Hacked【黑客】手游攻略
  2. 《指弹:千与千寻:Always with me》
  3. 求一个整数的各个位数
  4. 如何从YouTube历史记录中暂停,清除和删除视频
  5. 评论回复功能 asp.net_LR2021颜色分级功能让照片调色简单有趣好玩!最新尝鲜测试...
  6. 【整理收集】使用当中IE浏览器遇到的兼容性问题
  7. 最新WordPress微信小程序社区论坛源码多端应用
  8. 1月第1周业务风控关注 | 四部门联合印发App违法违规收集使用个人信息行为认定方法
  9. 根号分治 + 入门题目
  10. wi-fi 频宽设置_为客人设置Wi-Fi的10种方法