android真机修改布局,Android布局优化之层级优化

程序的每个组件和 Layout 都需要经过初始化、布局和绘制,如果布局嵌套层次过深,就会导致加载操作更为耗时,更严重的话还可能导致内存溢出。本节我们学习使用两个工具来检查和优化 Layout。

HierarchyViewer

该工具位于Android SDK tools中,使用HierarchyViewer可以分析正在运行app的布局,从而打破影响布局性能的瓶颈。

HierachyViewer通过选择运行在模拟器或真机上的进程来工作,并通过布局树来展示。上面每个标识代表布局的Measure、Layout和Draw的性能,帮助开发者来定位潜在的问题。

如图1所示,图中是ListView中的一条布局,这个布局左边是一个ImageView,右边是一个LinearLayout中嵌套两个TextView布局。

61ac66b4b9ca0be97e1d57c1cb2d65d3.png

图1

HierarchyView工具可以用于Android模拟器,打开后,即可看到可用设备列表和运行的组件。在Windows选项卡里,点击Hierarchy View后,即可看到选择组件的布局层次结构。例如图2 展示了图1 的ListItem布局的层次结构。

4b43752f83cdad730da66dfad7a46610.png

图2

减少层次结构

由于上图使用了嵌套的LinearLayout结构布局,导致性能变慢。我们可以使用扁平化的思想来优化它们——布局要宽而广,而不是窄而深! 我们可以使用Relativelayout来作为顶级节点,这样转向RelativeLayout来布局之后,我们会看到下图这样的布局层级结构。

59b714e638278bb97931133461850c27.png

图3

修改为RelativeLayout布局之后,层级减少,布局性能大大增强。另外,LinearLayout中的layout_weight也会减慢measure的速度,所以不是必要时不要使用layout_weight属性。这只是一个小小的例子,在一些非常复杂的布局中,如果层级太多或LinearLayout嵌套过多,系统会将很大性能消耗在UI的measure计算上面,因此,层级结构优化至关重要。

Lint

Android Lint是在 ADT 16 提供的新工具,它是一个代码扫描工具,Lint已经替代了Layoutopt tool成为重要的提示工具,它具有更多更高级的功能 ,能够帮助我们识别代码结构存在的问题。Lint 包含的一些检测规则有:

使用 compound drawable 替代一个包含 ImageView 和 TextView 的 LinearLayout。

合并根 FrameLayout

没用的子节点或父节点

硬编码问题

另外,开发者可以通过 File>Settings>Project Settings 来管理配置文件。

97ef77bd35761c0d577705d73a46f00a.png

8b5563050059eab2f76084b6b7982f23.png

android:布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!

1.布局优化 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayo ...

Android布局优化之include、merge、ViewStub的使用

本文针对include.merge.ViewStub三个标签如何在布局复用.有效减少布局层级以及如何可以按需加载三个方面进行介绍的. 复用布局可以帮助我们创建一些可以重复使用的复杂布局.这种方式也意味 ...

Android为TV端助力 布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!

1.布局优化 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayo ...

Android高级开发-布局渲染流程与优化

CPU(中央处理器)与GPU(图像处理器) 主要是设计目标不同,针对不同的应用场景.多缓存多分支,适用于复杂的逻辑运算,主要负责Measure,Layout,Record,Execute的计算操作. ...

【转】Android布局优化之ViewStub

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

谈谈android 布局 的优化

来自:http://www.cnblogs.com/youxilua/archive/2012/05/08/2489414.html 导言 设配android的屏幕一定是一个噩梦,就好比那些搞网页设计 ...

转:Android布局优化

categories: Android 在Android开发中,我们常用的布局方式主要有LinearLayout.RelativeLayout.FrameLayout等,通过这些布局我们可以实现各种各 ...

Android布局优化:include 、merge、ViewStub的详细总结

版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要是对上篇博客的补充Android性能优化之UI渲染性能优化, 没有什么新东西,觉得应该是都掌握的玩意,写出来也只是自己做个小小的总结. ...

Android成长日记-Android布局优化

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

随机推荐

海量数据相似度计算之simhash和海明距离

通过 采集系统 我们采集了大量文本数据,但是文本中有很多重复数据影响我们对于结果的分析.分析前我们需要对这些数据去除重复,如何选择和设计文本的去重算法?常见的有余弦夹角算法.欧式距离.Jaccard相 ...

判断List、Map、Set是否为空及效率比较

//如果object为null,则设置为defaultValue ObjectUtils.defaultIfNull(object, defaultValue); //判断集合是否为null Li ...

Spring Dynamic Modules - DMserver

spring dm server 官网:http://static.springsource.com/projects/dm-server/1.0.x/programmer-guide/htmlsin ...

CentOS下的防火墙关闭

关闭防火墙 1.查看防火墙状态 service iptables status 2.关闭,但开机后又会打开 service iptables stop 3.查看防火墙开机启动状态 chkconfig ...

simulink下直接代码生成

连接好DSP,打开Matlab,首先必须要更改环境,要不不能编译通过 输入C2000lib,打开库, 在C2833X DSP Chip Support中添加外设,然后在C2000 Target Pre ...

试水 Egret :TouchEvent与EnterFrame相关

由于Egret是照着ActionScript的api去做的,且TS就是JS,JS和AS都是兄弟语法,同属于ECMAScript语法系的,所以我就直接测试了的. 如下: var sp:egret.Spr ...

mac SecureCRT设置

参考: http://www.2cto.com/os/201407/320292.html SecureCRT 设置 1)每次登陆都要输入密码: Global Option -> General ...

Centos7 开放防火墙端口命令

Centos 7 使用firewalld代替了原来的iptables,使用方法如下: >>>关闭防火墙 systemctl stop firewalld.service       ...

js_10_dom表单

事件的优先级? 先执行事件,后执行标签内置事件,如果事件返回false不执行后面的事件或标签内置事件 如何通过js提交表单? 任意标签定义onclick事件 函数中写入:document.getEle ...

Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解

NVL(EXPR1,EXPR2) NVL2(EXPR1,EXPR2,EXPR3) NULLIF(EXPR1,EXPR2) COALESCE(EXPR1,,..,EXPRn) decode ------ ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值