Android开发之UI布局优化全面总结
来源:互联网 发布:咫尺网络登录 编辑:程序博客网 时间:2024/06/08 19:25
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
如有纰漏,欢迎留言指正,万分感谢!
- Android开发之UI布局优化全面总结
- android UI进阶之布局的优化
- android UI进阶之布局的优化
- android UI进阶之布局的优化
- Android学习之 UI布局优化
- Android UI布局优化之ViewStub
- Android开发之布局优化
- Android UI布局优化
- Android性能优化之布局优化总结
- Android-UI开发之常用布局
- android开发之svg全面总结
- Android开发-UI布局
- 代码优化之UI布局
- 浅谈android布局UI优化
- Android UI之布局
- Android之UI布局
- Android之布局UI
- android UI进阶之布局的优化(二)
- 优秀word文档编写的技巧
- js方法获得地址栏中传过来的参数值
- 机房收费系统之三(注册窗体)
- HTTP缓存Etag和Last-Modified
- 弹出框兼容IE5-IE11
- Android开发之UI布局优化全面总结
- MySQL变量自增的一个神奇之处
- 最近做一些C/S
- spark executor
- swift3.0 自定义Log
- libsvm在MATLAB下的编译问题
- BZOJ3670: [Noi2014]动物园
- POJ 2528 Mayor's posters (线段树区间赋值 + 离散化)
- java实现HTTP的post请求 key-value格式与json格式的区别