Android布局优化

一、抽象布局标签java

(a)<include>标签android

    include标签经常使用于将布局中的公共部分提取出来供其余layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。缓存

<include>标签惟一须要的属性是layout属性,指定须要包含的布局文件。能够定义android:id和android:layout_*属性来覆盖被引入布局根节点的对应属性值。注意从新定义android:id后,子布局的顶结点i就变化了。网络

(b)<viewstub>标签模块化

viewstub标签同include标签同样能够用来引入一个外部布局,不一样的是,viewstub引入的布局默认不会扩张,即既不会占用显示也不会占用位置,从而在解析layout时节省cpu和内存。
viewstub经常使用来引入那些默认不会显示,只在特殊状况下显示的布局,如进度布局、网络失败显示的刷新布局、信息出错出现的提示布局等。工具

在java中可使用(ViewStub)findViewById(id)找到ViewStub,经过stub.inflate()展开ViewStub,而后获得子View,隐藏直接设置GONE,建议本地化保存,下次从新展现View就不用从新Inflate布局

(c) <merge>标签性能

在使用了include后可能致使布局嵌套过多,多余没必要要的layout节点,从而致使解析变慢,没必要要的节点和嵌套可经过hierarchy viewer(下面布局调优工具中有具体介绍)或设置->开发者选项->显示布局边界查看。优化

merge标签可用于两种典型状况:
a.  布局顶结点是FrameLayout且不须要设置background或padding等属性,能够用merge代替,由于Activity内容视图的parent view就是个FrameLayout,因此能够用merge消除只剩一个。
b.  某布局做为子布局被其余布局include时,使用merge看成该布局的顶节点,这样在被引入时顶结点会自动被忽略,而将其子节点所有合并到主布局中。线程

二、去除没必要要的嵌套和View节点

(1) 首次不须要使用的节点设置为GONE或使用viewstub,(设置View 为GONE在加载的时候不会被解析,减小系统消耗)
(2) 使用RelativeLayout代替LinearLayout
大约在Android4.0以前,新建工程的默认main.xml中顶节点是LinearLayout,而在以后已经改成RelativeLayout,由于RelativeLayout性能更优,且能够简单实现LinearLayout嵌套才能实现的布局。
4.0及以上Android版本可经过设置->开发者选项->显示布局边界打开页面布局显示,看看是否有没必要要的节点和嵌套。4.0如下版本可经过hierarchy viewer查看。

三、减小没必要要的inflate

(1) 对于inflate的布局能够直接缓存,用所有变量代替局部变量,避免下次需再次inflate

(2) ListView提供了item缓存,固然如今用的RecyleView性能更好,建议进行替换

四、其余点

(1)用SurfaceView或者TextureView代替普通的View

SurfaceView或TextureView能够经过将绘图操做移动到另外一个单独线程上提升性能。
普通View的绘制过程都是在主线程(UI线程)中完成,若是某些绘图操做影响性能就很差优化了,这时咱们能够考虑使用SurfaceView和TextureView,他们的绘图操做发生在UI线程以外的另外一个线程上。
由于SurfaceView在常规视图系统以外,因此没法像常规试图同样移动、缩放或旋转一个SurfaceView。TextureView是Android4.0引入的,除了与SurfaceView同样在单独线程绘制外,还能够像常规视图同样被改变。

(2)使用RenderScript

RenderScript是Adnroid3.0引进的用来在Android上写高性能代码的一种语言,语法给予C语言的C99标准,他的结构是独立的,因此不须要为不一样的CPU或者GPU定制代码代码。

(3)使用OpenGL绘图

Android支持使用OpenGL API的高性能绘图,这是Android可用的最高级的绘图机制,在游戏类对性能要求较高的应用中获得普遍使用。
Android 4.3最大的改变,就是支持OpenGL ES 3.0。相比2.0,3.0有更多的缓冲区对象、增长了新的着色语言、增长多纹理支持等等,将为Android游戏带来更出色的视觉体验。

(4)尽可能为全部分辨率建立资源

减小没必要要的硬件缩放,这会下降UI的绘制速度,可借助Android asset Studio

五、布局调优工具

(1)hierarchy viewer

hierarchy viewer能够方便的查看Activity的布局,各个View的属性、measure、layout、draw的时间,若是耗时较多会用红色标记,不然显示绿色。
hierarchy viewer.bat位于<sdk>/tools/目录下

(2)使用Lint

这个就不详细解释了

相关文章
相关标签/搜索