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

本文深入探讨了Android布局的基本概念、布局样式选择、布局原则、include与merge的使用、ViewStub的惰性加载,旨在提供高效、灵活的UI设计与实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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();//加载到界面中


        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值