简述linearlayout和relativelayout

发布时间 2023-04-06 10:48:43作者: YE-

text、button、edittext -->简易登录界面

  1.什么事textview、button、edittext

  2.讲解属性设置

  3.对应java文件如何设置

  

linearlayout和relativelayout

linearlayout:线性布局

  1.垂直布局 vertical    水平布局  horizontal

android:orientation="vertical"  //horizontal

relativelayout:相对布局

  1.不仅仅只有出垂直和水平布局

 

**设置距离页边距多少距离

android:padding="10dp"

 **设置背景图片或颜色

android:background="@drawable/tree"

 

LinearLayout性能优于RelativeLayout
在源码当中,由于RelativeLayout是相对布局,布局之间相互依赖,所以当测量完横向布局的时候,还需要进行一次纵向布局的测量,才能最终获得布局的大小,但是LinearLayout由于布局方向确定,在无weight的情况下之测量一次,即使有weight也只是测量部分view的大小。
注意:在层级深度相同的情况下,建议使用LinearLayout
约束布局的优点
约束布局是相对布局的进化版,与RelativeLayout的区别在于他是约束布局,可以定义控件与父类之间的约束,但是RelativeLayout可能需要嵌套实现。其他部分感觉都很类似

 

结论
(1)RelativeLayout会让子View调用2次onMeasure,LinearLayout 在有weight时,也会调用子View 2次onMeasure
(2)RelativeLayout的子View如果高度和RelativeLayout不同,则会引发效率问题,当子View很复杂时,这个问题会更加严重。如果可以,尽量使用padding代替margin。
(3)在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。
(4)提高绘制性能的使用方式
根据上面源码的分析,RelativeLayout将对所有的子View进行两次measure,而LinearLayout在使用weight属性进行布局时也会对子View进行两次measure,如果他们位于整个View树的顶端时并可能进行多层的嵌套时,位于底层的View将会进行大量的measure操作,大大降低程序性能。因此,应尽量将RelativeLayout和LinearLayout置于View树的底层,并减少嵌套。
最后思考一下文章开头的疑问:较低的SDK版本新建Android项目时,默认的布局文件是采用线性布局LinearLayout,但现在自动生成的布局文件都是RelativeLayout,为什么呢?
这是Google关于RelativeLayout的说明:

PS.Google的意思是“性能至上”, RelativeLayout 在性能上更好,因为在诸如 ListView 等控件中,使用 LinearLayout 容易产生多层嵌套的布局结构,这在性能上是不好的。而 RelativeLayout 因其原理上的灵活性,通常层级结构都比较扁平,很多使用LinearLayout 的情况都可以用一个 RelativeLayout 来替代,以降低布局的嵌套层级,优化性能。所以从这一点来看,Google比较推荐开发者使用RelativeLayout,因此就将其作为Blank Activity的默认布局了。