您的位置:首页 > 移动开发 > Android开发

Android——Android布局优化(include、ViewStub、merge)

2014-12-19 19:00 447 查看
一、Android常用布局样式

1.LinearLayout(线性布局)垂直的 水平的

2.RelativeLayout(相对布局)最灵活的

3.TableLayout(表格布局)使用GridView代替

4.AbsoluteLayout(绝对布局)

5.FrameLayout(帧布局)布局叠加时使用

二、Android布局原则

1. 尽量多使用LinearLayout和RelativeLayout,不要使用AbsoluteLayout。

2. 在布局层次一样的情况下,建议使用LinearLayout代替RelativeLayout,因为LinearLayout性能要稍高一些。

3. 将可复用的组件抽取出来并通过include标签使用。

4. 使用ViewStub标签来加载一些不常用的布局。

5. 使用merge标签减少布局的嵌套层次。

三、<include/>的使用

1. 作用:将共用的组件抽取出来单独放到一个xml文件中,然后使用include标签导入共用布局。

2. 效果:提高UI的制作和复用效率,也能保证制作的UI布局更加规整和易维护。

使用:正常新建一个布局xml文件(命名为title.xml),添加控件标签

<include layout="@layout/common_title" />

title.xml的部分内容为

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://...."
android:background="#000000"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<TextView
...
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"/>
</RelativeLayout>
四、使用merge合并UI布局

1. 可以降低UI布局的嵌套层次

2. 应用场景:

(1)布局根节点是FrameLayout且不需要设置background或padding等属性,可以用merge代替,同样会有叠加的效果。

(2)某布局作为子布局被其他布局include时,使用merge当作该布局的顶节点(如将LinearLayout换位merge),这样在被引入时顶节点会自动被忽略。

(3)布局顶节点中有background等其他额外属性时,不能用merge

五、使用ViewStub惰性加载

作用:ViewStub标签同include标签一样可以用来引入一个外部布局,不同的是,ViewStub引入的布局默认不会扩张,既不会占用显示,也不会占用位置,从而在解析layout时节省CPU和内存。就是可以认为去控制何时将引入的外部布局加载到界面中来。

用法:
<ViewStub
android:id="@+id/stub"
android:layout="@/layout/xxx />


如何加载ViewStub布局

private ViewStub stub;

stub=(ViewStub)findViewById(R.id.stub);

stub.inflate();//加载到界面中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: