必威体育Betway必威体育官网
当前位置:首页 > IT技术

LinearLayout和RelativeLayout属性和性能详解

时间:2019-09-25 23:10:00来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

linearlayout

一、前期基础知识储备

上,官方文档

由上面的官方文档,我们可以看出,两个布局方式的相同,都是继承自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等技巧。可以进行较大的布局优化。

相关阅读

社会化媒体营销是什么?人的社会属性

社会化媒体和移动互联网是现在最热门的话题,关于社会化媒体和移动互联的营销也是人们争论的焦点话题!看过很多社会化媒体营销的文章

电脑桌面回收站右键的属性菜单不见了怎么恢复?

在咱们的电脑中,几乎所有文件或者是程序的右键菜单中都有属性这个选项,在这个属性窗口中,咱们可以对该文件或者是程序进行一些常规的

DNF吉祥熊猫宠物属性 红蓝吉祥熊猫外观一览

DNF吉祥熊猫宠物属性怎么样呢?吉祥熊猫分为红蓝两种颜色,当然属性外观也是不一样的哦。下面就来一起看下DNF吉祥熊猫宠的属性与外

dnf2018五一套怎么样 2018五一套属性称号一览

dnf五一套价格/内容/称号/宝珠/时装外观大全,2018年五一马上就要来了,今年dnf也会像往年一样为大家准备五一套。那么下面就来一起看

电脑怎么查看鼠标属性?

电脑想要查看鼠标属性,并更改鼠标设置,该怎么操作呢?下面我们就来看看详细的教程。一、查看鼠标的属性1、用户在"通知 V 形 (按钮)"

分享到:

栏目导航

推荐阅读

热门阅读