一、关于RelativeLayout和LinearLayout的使用

由源码可以知道,RelativeLayout需要对其子View进行两次measure过程,而LinearLayout只需一次measure过程,我们知道,onMeasure的耗时越长效率就越低,但是如果LinearLayout中有weight属性,也需要进行两次measure,即便如此,仍然会比RelativeLayout的情况好一些。

总体原则:减少布局层次,加快渲染速度。

当线性布局和相对布局均可以实现时,优先使用线性布局LinearLayout,如果使用的是相对布局RelativeLayout,尽量避免RelativeLayout嵌套RelativeLayout,并且尽量使用padding代替margin。

二、<include />的使用

<include />标签可以在一个布局中引用另外一个布局,实现布局重用。比如共同的标题栏(title.xml),只要加上如下代码即可重用。

<include layout=“@layout/title” />

三、<merge /> 的使用

<merge />标签可以减少视图的层级结构。比如说,如果主布局是线性布局,include进来的也是线性布局,这时候include进来的线性布局就是多余的,可以用merge标签代替(重用布局的父布局使用merge),仍使用include引入布局。

四、ViewStub的使用

ViewStub是一个轻量级的View,宽高均为0,实现View的延迟加载,避免资源的浪费,减少渲染时间,在需要的时候才进行加载。比如提醒框的使用。

五、Space控件的使用

Space控件占据一定的空间,但是不显示任何东西,可用于行间隔。

六、TextView的使用

TextView可同时显示文字和图片;TextView的属性lineSpacingExtra可设置行间距。

七、LinearLayout线性布局

LinearLayout的属性divider可设置分割线,相关属性:dividerPadding、showDividers。

Android布局优化思考的更多相关文章

  1. 【转】Android布局优化之ViewStub

    ViewStub是Android布局优化中一个很不错的标签/控件,直接继承自View.虽然Android开发人员基本上都听说过,但是真正用的可能不多. ViewStub可以理解成一个非常轻量级的Vie ...

  2. Android布局优化之include、merge、ViewStub的使用

    本文针对include.merge.ViewStub三个标签如何在布局复用.有效减少布局层级以及如何可以按需加载三个方面进行介绍的. 复用布局可以帮助我们创建一些可以重复使用的复杂布局.这种方式也意味 ...

  3. 转:Android布局优化

    categories: Android 在Android开发中,我们常用的布局方式主要有LinearLayout.RelativeLayout.FrameLayout等,通过这些布局我们可以实现各种各 ...

  4. [旧][Android] 布局优化

    备注 原发表于2016.05.21,资料已过时,仅作备份,谨慎参考 前言 最近在编写布局时,发现这一块是有很多值得深入学习的地方的.毕竟应用开发,界面展示是十分重要的部分.另外在开发时,为自己的代码做 ...

  5. Android布局优化:include 、merge、ViewStub的详细总结

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要是对上篇博客的补充Android性能优化之UI渲染性能优化, 没有什么新东西,觉得应该是都掌握的玩意,写出来也只是自己做个小小的总结. ...

  6. [Android]Android布局优化之<include />

    转载请标明:转载于http://www.cnblogs.com/Liuyt-61/p/6602891.html -------------------------------------------- ...

  7. Android成长日记-Android布局优化

    Android常用布局 1. LinearLayout(线性布局) 2. RelativeLayout(相对布局) 3. TableLayout(表格布局) 4. AbsoluteLayou(绝对布局 ...

  8. android 布局优化常用技巧

    android对多个模块都要是要的UI逻辑的致辞除了fragment之外,没有别的东西可以支持了, include,merge,viewstub只能支持公用的ui,但是这个通用支持不能包含逻辑(jav ...

  9. Android 布局优化

    转载自stormzhang的博客:http://stormzhang.com/android/2014/04/10/android-optimize-layout/ < include /> ...

随机推荐

  1. NO-ZERO(空格补全)

    The NO-ZERO command follows the DATA statement REPORT Z_Test123_01. DATA: W_NUR(10) TYPE N. MOVE 50 ...

  2. Vue 去脚手架插件,自动加载vue文件

    接上回 一些本质 本质上,去脚手架也好,读取vue文件也好,无非是维护options,每个Vue对象的初始化配置对象不触及Vue内部而言,在外部想怎么改都是可以的,只要保证options的正确,一切都 ...

  3. cgi、fastcgi、php-cgi、php-fpm的关系

    1. CGI CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其 ...

  4. java网络编程框架

    虽然写过一些网络编程方面的东西,但还没有深入研究过这方面的内容,直接摘录一些文章,后续整理 原文地址:http://blog.csdn.net/lwuit/article/details/730613 ...

  5. 在Linux下通过rpm打包发布Java程序

    这个东西涉及的内容较多,根据下面这些文章慢慢学习 一个简单的例子 http://blog.csdn.net/king_on/article/details/7169384 按照文章中的步骤来,打包之后 ...

  6. C++学习003-#define 自定义宏

    C++中可以用#define来定义自定义的宏 也可以用使用#define来定义常量 但是#define只是简单的替换,在定义常量的时候没有语法检测 所以在C++定义常量可以使用  Const修饰 #d ...

  7. 9.0 toast定位+WebDriverWait显示等待

    Toast  判断-----基本操作问题 首先基本操作,进入安卓市场的账号密码页面--- from appium import webdriver from selenium.webdriver.su ...

  8. day-11 python自带库实现2层简单神经网络算法

    深度神经网络算法,是基于神经网络算法的一种拓展,其层数更深,达到多层,本文以简单神经网络为例,利用梯度下降算法进行反向更新来训练神经网络权重和偏向参数,文章最后,基于Python 库实现了一个简单神经 ...

  9. penLDAP学习笔记

    LDAP协议 目录是一组具有类似属性.以一定逻辑和层次组合的信息.常见的例子是通讯簿,由以字母顺序排列的名字.地址和电话号码组成.目录服务是一种在分布式环境中发现目标的方法.目录具有两个主要组成部分: ...

  10. lintcode-98-链表排序

    98-链表排序 在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序. 样例 给出 1->3->2->null,给它排序变成 1->2->3->nu ...