对于android应用程序的用户体验来说,布局的影响是很直接很关键的一部分,不合理的布局可能导致内存饥饿,和反应不灵敏,改进布局性能,可以降低内存占用使界面更平滑。

一、优化布局结构

使用嵌套实例LinearLayout可能会导致比较深层次的嵌套,嵌套LinearLayout使用该layout_weight参数的几个实例每个子元素需要测量两次,当用于ListView中时布局被重复地膨胀。

Android SDK工具包括一个名为Hierarchy Viewer的工具,可让您在应用程序运行时分析您的布局。使用此工具可以帮助您发现布局性能的瓶颈。
层次查看器可以通过允许您在连接的设备或模拟器上选择正在运行的进程,然后显示布局树。每个块上的交通信号灯表示其测量,布局和绘图性能,可帮助您识别潜在的问题。

可以看到有一个3层次的层次结构,在布置文本项目时会出现一些问题。可以点击项目显示每个阶段的时间,以此来衡量,布局和渲染,以及您应该花时间优化哪些地方。

因为上面的布局性能由于嵌套而减慢LinearLayout,所以性能可以通过平铺布局来改善 - 使布局变浅而不是狭窄而深入。A RelativeLayout作为根节点允许这样的布局。因此,当将此设计转换为使用时RelativeLayout,可以看到布局变为2级层次结构。
大多数时间差异是由于layout_weight在LinearLayout设计中的使用,这可能会降低测量速度。

二、复用布局

**使用**include和merge标签在当前布局中嵌入另一个布局。
创建一个准备重用的XML布局文件并定义好内容,在需要使用的地方添加include标签@layout指向重用的XML文件,并可以修改该布局根视图的所有布局参数。

merge 当在另一个中包含一个布局时,该标签有助于消除视图层次结构中的冗余视图组。例如,如果您的主要布局是垂直的LinearLayout,其中可以在多个布局中重新使用两个连续的视图,则放置两个视图的可重用布局需要自己的根视图。然而,使用另一个LinearLayout作为可重用布局的根将导致垂直LinearLayout内部的垂直LinearLayout。LinearLayout 除了减慢您的UI性能之外,嵌套不提供真正的目的。
为了避免包含这样一个冗余视图组,您可以使用该 merge元素作为可重用布局的根视图

三、ListView的数据处理

在后台线程中加载网络数据,图片等,完成后在通知UI线程更新;
使用ViewHolder来保存视图,避免重复去findViewById()控件,节约处理器周期。

android改进布局性能相关推荐

  1. Android开发——布局性能优化的一些技巧(一)

    0. 前言 上一篇我们分析了为什么LinearLayout会比RelativeLayout性能更高,意义在于分析了这两种布局的实现源码,算是对一个小结论的证明过程,但是对布局性能的优化效果,对这两种布 ...

  2. Android官方开发文档Training系列课程中文版:布局性能优化之布局层级优化

    原文地址:http://android.xsoftlab.net/training/improving-layouts/index.html 引言 布局是直接影响用户体验的关键部分.如果实现的不好,那 ...

  3. android标题栏添加按钮_改善Android布局性能

    布局是 Android 应用中直接影响用户体验的关键部分.如果实现不当,您的布局可能会导致应用界面缓慢且需要占用大量内存.Android SDK 包含一些工具,有助于您识别布局性能方面的问题,将这些工 ...

  4. android布局的效率对比,Android使用ViewStub提高布局性能

    在Android开发中,View是我们必须要接触的用来展示的技术.通常情况下随着View视图的越来越复杂,整体布局的性能也会随之下降.这里介绍一个在某些场景下提升布局性能的View,它就是ViewSt ...

  5. 深入剖析:如何优化Android应用的性能和内存管理

    深入剖析:如何优化Android应用的性能和内存管理 性能和内存管理的重要性 在今天的移动应用开发中,用户对于应用的性能和体验要求越来越高.一款性能卓越的Android应用能够提供流畅的操作体验.快速 ...

  6. Android中的性能优化方法

    文章目录 1. 为什么要进行性能优化 2. 提高应用性能的优化方向 2.1 布局优化 2.1.1 merge标签 2.1.2 ViewStub标签 2.2 绘制优化 2.3 内存泄露 2.3.1 静态 ...

  7. android 内存和性能优化汇总

    1.即时编译(Just-in-time Compilation,JIT),又称动态转译(Dynamic Translation),是一种通过在运行时将字节码翻译为机器码,从而改善字节码编译语言性能的技 ...

  8. Android相对布局(RelativeLayout)

    Android相对布局(RelativeLayout) 备注:这里的视图和元素是等同的概念. RelativeLayout是一个允许子视图相对于其他兄弟视图或是父视图显示的视图组(通过ID指定).每个 ...

  9. Android 优化布局层次结构

    前面介绍过使用HierarchyViewer和Android lint来优化我们的程序,这一篇算是总结性的,借助一个小例子来说用怎么优化应用布局.这个例子是android官网给出的,作者也当一把翻译. ...

最新文章

  1. a-awk 计算数值最大,最小,平均值并保留指定位数
  2. 为什么Python类语法应该不同?
  3. CHECKLIST TO USE BEFORE SUBMITTING A PAPER TO A JOURNAL
  4. comparator 字符串比较大小_Java中Comparable和Comparator实现对象比较
  5. 【Python】Python库之文本处理
  6. 关于dubbo的几个问题
  7. 华为P Smart Z海外上架:搭载弹出式前置摄像头
  8. mfc多线程编程实例_多线程技术的PLC与PC的通讯方式
  9. 数字校园APP——可行性报告分析
  10. 用Appscan 作代理,录制APP页面的限制条件
  11. [转]Angular引入第三方库
  12. 写给非网工的CCNA教程(3)聊聊ping命令后的原理
  13. 【生信】统计学基础知识
  14. android 全局剪贴板,Android剪贴板详解
  15. mt4虚拟服务器账户无效,外汇登录显示无效账户怎么办?
  16. azure创建centos_如何使用Blazor和Azure计算机视觉创建光学字符读取器
  17. 计算机桌面太大了,电脑显示器显示太大怎么办
  18. python from __future__ import
  19. FMEA软件——FMEA优化的步骤
  20. 我的ctf学习笔记 misc(二)

热门文章

  1. kafka系列(五)—— broker存储结构
  2. Windows下LATEX排版论文攻略—CTeX、JabRef使用介绍
  3. 如何做好人才盘点?企业需要从这五个方面入手
  4. Plasmic Studio入门教程
  5. 3D echarts在vue中的使用
  6. 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选
  7. 【微信公众号】菜单知识点
  8. 微信小程序添加视频video组件
  9. win7怎么更改计算机虚拟内存,详细教你win7虚拟内存怎么设置最好
  10. 前端使用svg勾画折线图