Android开发最常见的问题之一是屏幕碎片化太严重,所以我们在写布局的时候尽量不能适应硬编码去布局。
布局优化在开发过程中起到至关重要的作用。
1.合用weightSum属性和layout_weight属性
通常大家所熟知的只有layout_weight属性,是指按比例占用父容器尺寸,这样做有个默认值是指所有子控件的layout_weight之和为父容器的总值。
但是当我们不需要使用子控件铺满整个父容器的时候,就显得有些不适应了。这时候我们可以给父容器设置weightSum属性,来制定父容器的比例总值。
举个栗子:我们在LinearLayout中只放一个Button,且不管横屏还是竖屏都居中显示,并只占屏幕宽的一半,如下图所示:
这时我们可以给LinearLayout设置weightSum = "2" 给子控件Button设置比例为layout_weight = "1"并设置居中。
这两句代码的意思是,设置父容器的总比例为2,子控件的占比为1,即占用空间为1/2,即达到需要的效果。
2.使用 style 主题来定义一个通用的属性,从而重复利用代码,减少代码量。使用 include 标签加载底部菜单栏布局。include 标签的目的是重复利用布局,来减少代码。
3.减少布局嵌套的层次。使用TextView可以设置四个方向图片(android:drawableTop=""等)来直接替代LinerLayout下包裹一个ImageView 和TextView TextView,减少了一层嵌套布局。利用RelativeLayout相对布局减少一层桥套,提高了加载布局的效率。
4.使用 LinearLayoutCompat 组件来实现线性布局元素之间的分割线,从而减少了使用View来实现分割线效果。LinearLayoutCompat的具体内容请参考http://blog.csdn.net/feiduclear_up/article/details/46619637
5.通过减少背景颜色的设置来减少Overdraw的情况。
查看布局是否过度绘制的工具:
01.Hierarchy View:AS 工具栏中点击 Tools–>Android–>Android Device Monitor–>Hierarchy View。
02.显示GPU过度绘制:在手机打开 设置—->开发者选项—->显示GPU过度绘制(绘制的层次从最优到最差:蓝,绿,淡红,红)
03.Android Lint 工具:主要是用来检查工程中代码的不合理,布局不合理,资源重复,图片重复,等,让开发者进一步优化自己的应用。AS 用户打开此工:工具栏 Analyze—>Inspect Code。
6.懒加载布局 ViewStub
通过 setVisibility(View.VISIBLE)或者viewStub.inflate()方来来让其显示,通过setVisibility(View.INVISIBLE)来隐藏 ViewStub。
布局隐藏是是不加载的,只有当用户需要的时候手动点击再让其加载。这样可以在初始下载的时候少加载一些不是很重要的布局,节省资源和时间。
参考:http://www.2cto.com/kf/201506/412711.html
如有纰漏,欢迎留言指正,万分感谢!