一、前期基础知识储备

上,官方文档

由上面的官方文档,我们可以看出,两个布局方式的相同,都是继承自View.Group,是一种容器控件,LinearLayout的布局层次比较简单,方向和位置都比较容易控制,而相对布局RelativeLayout 对于其内子控件提供了更加丰富的布局层次和布局位置。

二、两者在属性上的异同点

共有属性:
java代码中通过btn1关联次控件
android:id="@+id/btn1"控件宽度
控件高度
控件排布控件间距
android:layout_marginLeft="5dip" //距离左边
android:paddingLeft="5dip"控件显示位置
android:gravity="center" //left,right, top, bottom
android:gravity="center_horizontal"
android:gravity是本元素所有子元素的重力方向。
android:layout_gravity属性则设置控件本身相对于父控件的显示位置TextView中文本字体定义控件是否可见定义背景图片
android:background="@drawable/img_bg" //img_bg为drawable下的一张图片seekbar控件背景图片及最大值
android:progressDrawable="@drawable/seekbar_img"
android:thumb="@drawable/thumb"
android:max = "60"
android:layout_alignWithParentIfMissing="true"仅仅在RelativeLayout中有效:
在父亲布局的相对位置
android:layout_alignParentLeft="true" //在布局左边在某个控件的相对位置
android:layout_toRightOf="@id/button1" //在控件button1的右边,不仅仅是紧靠着定义和某控件对齐
android:layout_alignTop=”@id/button1” //和控件button1上对齐android:layout_centerHorizontal="true"   //水平居中仅仅在LinearLayout中有效
设置控件在一排或一列中所占比例值
android:layout_weight="1"

注:android:gravity 和 android:layout_gravity 的区别

android:gravity 是设置该view里面的内容相对于该view的位置,例如设置button里面的text相对于view的靠左,居中等位置。(也可以在Layout布局属性中添加,设置Layout中组件的位置)。

android:layout_gravity 是用来设置该view相对与父view的位置,例如设置button在layout里面的相对位置:屏幕居中,水平居中等。

即android:gravity用于设置View中内容相对于View组件的对齐方式,而android:layout_gravity用于设置View组件相对于Container的对齐方式。说的再直白点,就是android:gravity只对该控件内的东西有效,android:layout_gravity只对控件自身有效。

三、两者在性能上的对比

通过网上的很多实验结果我们得之,两者绘制同样的界面时layout和draw的过程时间消耗相差无几,关键在于measure过程RelativeLayout比LinearLayout了一些。我们知道ViewGroup是没有onMeasure方法的,这个方法是交给子类自己实现的。因为不同的ViewGroup子类布局都不一样,那么onMeasure索性就全部交给他们自己实现好了。

1) RelativeLayout慢于LinearLayout是因为它会让子View调用2次measure过程,而后者只需一次,但是有weight属性存在时,后者同样会进行两次measure。

2) RelativeLayout的子View如果高度和RelativeLayout不同,会引发效率问题,可以使用padding代替margin以优化此问题。

3) 在不响应层级深度的情况下,使用Linearlayout而不是RelativeLayout。

据此,说明两个常见的,暂时没有引起注意的事情:

①作为顶级View的DecorView却是个垂直方向的LinearLayout,上面是标题栏,下面是内容栏,我们常用的setContentView()方法就是给内容栏设置布局。采用RelativeLayout并不会降低层级深度,因此这种情况下使用LinearLayout效率更高。

②为开发者默认新建RelativeLayout是希望开发者能采用尽量少的View层级,很多效果是需要多层LinearLayout的嵌套,这必然不如一层的RelativeLayout性能更好。因此我们应该尽量减少布局嵌套,减少层级结构,使用比如viewStub,include等技巧。可以进行较大的布局优化。

LinearLayout和RelativeLayout属性和性能详解相关推荐

  1. 阿里云轻量级GPU计算型vgn6i云服务器配置性能详解

    查看全文 http://www.taodudu.cc/news/show-2923995.html 相关文章: 抽象数据类型 C++实现 计算复数 [(8+6i)*(4+3i)]/[(8+6i)+(4 ...

  2. moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...

  3. CSS3中font-face属性的用法详解

    CSS3中font-face属性的用法详解 @font-face是CSS3中的一个模块,主要是把自定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕 ...

  4. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  5. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  6. python控制画笔尺寸,Python画笔的属性及用法详解

    画笔有颜色.画线的宽度等属性. 1.turtle.pensize():设置画笔的宽度: 2.turtle.pencolor():没有参数传入返回当前画笔颜色:传入参数设置画笔颜色,可以是字符串如&qu ...

  7. dw css定位,css关于position属性的用法详解(绝对定位和相对定位的混淆)

    挺久没用,有点忘了关于position这个属性的用法,导致在练手的时候又犯了跟最开始新手才会犯的错误,那就是absolute和relative的用法. 在此首先看一下官方对这两个属性值的解释: pos ...

  8. mysql 嵌套查询性能_MySQL数据库之嵌套查询与连接查询的性能详解

    本文主要向大家介绍了MySQL数据库之嵌套查询与连接查询的性能详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 嵌套查询与连接查询的性能:连接查询一般较快:子查询很难被优化. ...

  9. CSS clear 属性取值详解

    之前有整理过一部分知识点, 一直没有发布, 因为都是有关 前端 方面的零散内容; 现在想想无论分享什么内容都需要慢慢积累, 所以还是决定将之前整理的相关内容验证之后慢慢分享给大家 这个专题 就是 工作 ...

最新文章

  1. python def函数报错详解_python所有内置函数的定义详解
  2. JSON.stringify() 格式化 输出log
  3. bzoj1715[Usaco2006 Dec]Wormholes 虫洞
  4. WP7 WMAppManifest.xml各个属性作用
  5. 如何选择基于 Kubernetes 的 PaaS?
  6. C++知识分享之STL容器:set 容器与 map 容器的简单应用
  7. python-集合数据类型
  8. Python-多线程编程
  9. 动态爬虫之手机版QQ空间登录
  10. LabVIEW编程LabVIEW开发 控制Keithley 2700例程与相关资料
  11. 第四周问题:Tu Hao's Problem
  12. 前端开发--箭头函数
  13. Android Studio系统状态栏,设置setSmallIcon通知图标无效问题及解决方案
  14. 微信公共号---LBS的开发
  15. w7上 android模拟器,win7系统运行安卓模拟器的操作方法
  16. 400分理科学计算机,400分左右的理科大学 高考400分能上什么学校
  17. 1_Lexical Pitfalls 词汇陷阱
  18. 网络安全中英文术语大全
  19. 敏捷方法 - 看板方法与流程管理
  20. 陕西省计算机高校排名,陕西省高校分档排名:西北大学位居榜首,第二档性价比高实力强...

热门文章

  1. MLB青少年棒球培养计划·野球1号位
  2. 设置网址导航为首页原来也可以赚点零花钱
  3. 整治蚂蚁之流非常必要——小米对贾康发言的几点随感
  4. 魔兽自定义屏幕分辨率
  5. Vue 3.0 公开代码之后……
  6. 2W字梳理50道经典计算机网络面试题(值得收藏)
  7. 台州学院学费计算机与应用,台州学院学费多少
  8. JSONArray举例
  9. python sql拼接_python 字典 拼接SQL语句
  10. Acro Multi-Language Suit for Delphi Win32升级到4.0版本