看书笔记。

Android中常用的布局类:

  • 线性布局(LinearLayout):按照垂直或者水平方向对齐每一个子视图。

大多数时候会利用线性布局构建一些UI元素,然后把包含这些元素的线性布局嵌套到其他布局(相对布局等)中。

  • 相对布局(RelativeLayout):每一个子视图与其他子视图之间以及屏幕边界之间的相对位置。

 

  • 帧布局(FrameLayout):最简单的布局管理器。默认位置是左上角,不过可以用gravity属性来改变其位置。添加多个子视图时,它会把每一个新的子视图堆积在前一个子视图上面,而且每一个新的子视图可能会遮挡它前面的视图。

 

  • 网格布局(GridLayout):在android4.0(API level 14)引入。是使用由极细的线构成的矩形网格。GridLayout极其灵活,能显著简化布局。减轻或减少嵌套。

网格布局使用一个随意选择的网格来放置视图,通过使用行和列延伸,Space View 和Gravity 属性可以创建出复杂的UI,不需要像相对布局那样构建UI而经常需要使用复杂的嵌套。

网格布局不需要设置宽度和高度属性,每个元素默认都会包围其元素,layout_gravity属性用来确定延伸的方向。

很少用的布局类:

  • 表格布局(TableLayout):按照行列方式布局组件。用的也比较少。
  • 绝对布局(AbsoluteLayout):按照绝对坐标来布局组件。不推荐使用已经过时。

 

优化布局

使用标签优化布局

填充布局是一个开销巨大的过程,所以为了让程序更加流畅运行和快速响应就需要减少冗余的布局和减少嵌套的数量。

标签可以用来把一个布局的内容插入到另一个布局中。也就是一个项目中需要用到相同的布局,可以通过 标签来重用layout代码。
 
xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
   
                      layout="@layout/title_bar"/>// 可以重用的标题栏的布局
 
但是在Android layout文件中需要一个顶级容器来容纳其他的组件,而不能直接放置多个组件,例如如1的代码,当它被添加到一个父容器中的时候就有冗余,所以我们就可以用标签。如2的代码。

1.	  
4.	  
5.	      
10.	  
11.	      
15.	  
16.	  

1


 

 

1.  "http://schemas.android.com/apk/res/android"  
2.    
3.      
4.          android:layout_width="match_parent"  
5.          android:layout_height="match_parent"   
6.          android:scaleType="center"  
7.          android:src="@drawable/myiamge " />  
8.    
9.      
10.         android:layout_width="wrap_content"  
11.         android:layout_height="wrap_content"  
12.         android:text="@string/hello" />  
13.  
14.   

2

如代码2,当包含merge标签的布局被添加到另一个布局的时候改布局的merge节点就被删除,而该布局里面的子view就会被直接的添加到新的父布局中。

ViewStub

填充每一个view都需要花费时间和资源,所以要避免使用过多的view,如果布局包含的view个数超过80个填充布局花费的时间将成为显著的问题。

当想要一个复杂的布局填充view的数量最少可以使用ViewStub。

ViewStub的工作原理就像是延时填充的include标签,只有显示调用inflate()方法或设置为可见的时候这个Stub才会被填充。在没有填充的时候它就是一个看不见,占用资源很小的view。而平时用的View.GONE只是设置成不可见,但是还是占个坑在那里,照样耗费资源。

但是ViewStub只能用来Inflate一个布局文件,用起来也很麻烦。


你可能感兴趣的:(看书笔记。)