UI性能优化思路就是减少ui加载的时间,提高流畅性。
布局优化
思路:减少布局层级,减少布局复杂度,减少绘制时间
1.在不需要嵌套的情况下,使用LinearLayout或者FrameLayout代替RelativeLayout
2.需要嵌套情况下,使用RelativeLayout代替LinearLayout。
3.使用<include> <merger>
标签
标签用于布局的复用,标签用于被复用的布局中,减少布局的嵌套层级。
include标签只支持layout属性和id,如果include有id,被复用的布局也有id,以include的为准,
4.使用<ViewStub>
标签
该标签可以将布局按需加载,提高ui初始化的效率。
通过setVisiablity()或者inflate()方法加载ViewStub,注意ViewStub对象只能使用一次,setVisiablity之后就失效了,需要频繁控制显隐的时候,需要使用内部的View。
绘制优化
View的onDraw中避免创建局部对象,否则产生大量临时对象,系统频繁gc,影响效率。
onDraw 中避免进行耗时操作,包括循环等。
检查View是否有过度绘制的情况,可以在手机的开发者选项中开启该选项。
ListView 和GridView优化
listView的优化同样遵循上面的规则,
思想:getView()中减少不必要的操作,逻辑,绘制等
1.使用ViewHolder,减少find次数
2.滑动情况下减少不必要的操作,如加载图片,开启异步任务
3.可以开启硬件加速
4.在listview列表的item中避免使用weight属性
ui性能优化工具
1.eclispse自带的hierarchy Viewer
使用Hierarchy Viewer工具检查,View Hierarchy 窗口还可以帮助你找到性能问题。只要看每个View节点的性能指标(颜色点)就可以,你可以看到测量(布局或绘制)最慢的View对象是哪个,这样你就能快速确定,要优先察看哪个问题。
2.手机的开发者选项的过度绘制查看选项,可以减少布局的过度绘制。
Gpu overDraw显示颜色减少红色区域
开启profile gpu rendering 一条柱状线都包含三部分,
蓝色代表测量绘制Display List的时间,红色代表OpenGL渲染Display List所需要的时间,黄色代表CPU等待GPU处理的时间
3.traceview,用于查看耗时方法,定位性能瓶颈。
使用参考:http://blog.csdn.net/androiddevelop/article/details/8223805