Android布局优化的几种方法

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


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


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

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

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


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

    作用:合并UI布局,使用该标签能降低布局的嵌套层次

    使用场景(1):布局根节点是FrameLayout,且不需要设置Padding或background等属性,可以用merge代替

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


5.使用ViewStub标签来惰性加载一些不常用的布局

  作用:ViewStub标签同include标签一样可以用来引入一个外部布局。不同的是,ViewStub引入的布局默认不会扩张,既不会占用显示也不会占用位置,类似View.Gone的效果,从而在解析布局时节省CPU和内存,当需要其显示时,可通过代码控制

使用 merge 标签的几点注意事项:
1.必须放在布局文件的根节点上。
2.merge 并不是一个 ViewGroup,也不是一个 View,它相当于声明了一些视图,等待被添加。
3.merge 标签被添加到 A 容器下,那么 merge 下的所有视图将被添加到 A 容器下。
4.因为 merge 标签并不是 View,所以在通过 LayoutInflate.inflate 方法渲染的时候, 第二个参数必须指定一个父容器,且第三个参数必须为 true,也就是必须为 merge 下的视图指定一个父亲节点。
5.如果 Activity 的布局文件根节点是 FrameLayout,可以替换为 merge 标签,这样,执行 setContentView之后,会减少一层 FrameLayout 节点。
6.自定义 View 如果继承 LinearLayout,建议让自定义 View 的布局文件根节点设置成 merge,这样能少一层结点。
7.因为 merge 不是 View,所以对 merge 标签设置的所有属性都是无效的。



你可能感兴趣的:(Android,android,优化,性能,布局)