android布局优化的重要性
来源:互联网 发布:免费顶级域名 编辑:程序博客网 时间:2024/05/16 02:50
对于像我们一些刚刚开始工作的的人来说,往往认为根据设计稿我们设计出来就行,然而却没有考虑到android加载的机制,有时候我们可能并不知道我们的布局是否需要优化,就可能对我们的布局没有什么感觉,下面是我们根据最近一个项目来说说。
1、布局的hierarchyviewer图和效果的截图
我们可以看到就是一个简单的布局,我们往往没有注意,就会出现这种过度的绘制,如果我们不知道什么是过度绘制,我们可以在手机的开发者选项—->显示GPU过度绘制来看一下,下面是不同程度的效果,
由此看以看出我们布局存在多大的问题。
2、针对布局存在的问题,我们要怎么才能更好的优化呢
①、减少布局的嵌套
嵌套太多的话会影响布局的渲染,所以我们布局的尽可能的去简化和复用一些布局,不能出现太多的嵌套
尽量保持布局层级的扁平化,在不影响层级深度的情况下,使用LinearLayout而不是RelativeLayout因为RelativeLayout会让子View调用2次onMeasure,LinearLayout 在有weight时,才会让子View调用2次onMeasure。Measure的耗时越长那么绘制效率就低。
1、用TextView同时显示图片和文字
editView等也一样的,还有属性drawableBottom和drawableTop供你使用。同时利用代码setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)可以让我们动态去设置图片
<TextView android:drawableLeft="@drawable/icon_1" //左边的图片 android:drawableRight="@drawable/icon_4" //右边的图片 android:drawablePadding="10dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:textSize="16sp" android:text="设置" android:background="@color/white" android:gravity="center_vertical" android:layout_width="match_parent" android:layout_height="50dp" />
2、使用TextView的行间距
利用Android:lineSpacingExtra="x dp"
3、使用Spannable或Html.fromHtml
4、用LinearLayout自带的分割线
android:divider="@drawable/divider"
5、Space控件
要给条目中间添加间距 使用Space,他是一个轻量级
详细了解请参考:http://blog.csdn.NET/qq_17766199/article/details/52863741
②、使用style主题等来定义一个通用的属性
③、使用LinearlayoutCompat组件来实现线性布局元素之间的分割线减少再使用其他的View
④、使用include的标签加载一些共有的布局
⑤、使用marge减少布局嵌套的层次
<merge/>标签都是与<include/>标签组合使用的,它的作用就是可以有效减少View树的层次来优化布局。
嵌套布局跟布局标签更改为<merge/>,然后再将嵌套布局放入<include/>中
⑥、对于一些不用必须加载的布局可以使用ViewStub
对于一些布局虽然设置可见性 View.GONE ,但是在Inflate的时候View仍然会被Inflate,仍然会创建对象,由于这些布局又想到复杂,所以会很消耗系统资源。ViewStub就是为了解决上面问题的,ViewStub是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件
⑦、
3 0
- android布局优化的重要性
- Android布局的优化
- android的布局优化
- android布局的优化
- Android布局的优化
- 站内优化的重要性
- 优化代码的重要性
- 优化代码的重要性
- 谈谈android 布局 的优化
- 谈谈android 布局 的优化
- 谈谈android 布局 的优化
- 谈谈android 布局 的优化
- Android界面布局的优化
- 谈谈android 布局 的优化
- 谈谈android 布局 的优化
- Android页面的布局优化
- 谈谈android 布局 的优化
- 谈谈android 布局 的优化
- mac上安装jquery总结
- SQL Server 日期处理相关
- Git的核心概念
- 【C#/WPF】UI控件的拖拽/拉伸
- Shader学习之Fixed function shader 简介
- android布局优化的重要性
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径(剑指offer)
- 排序总结
- mac上使用svn
- hibernateDaoSupport的使用步骤
- 谷歌搜索引擎设置
- mongovue链接meteor的mongdb
- JSP的详解
- Perl/Tk入门学习(上)