android之布局优化

android中提供了<include />、<merge />、<ViewStub />三种优化布局。

1.<include />

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

此布局通常用于一些复用较多的布局,方便后期维护。

<include />标签若指定了ID属性,而你的layout也定义了ID,则你的layout的ID会被覆盖。

<include />如要使android:layout_*生效,必须要写layout_width和layout_height两个属性。

2.<merge />

<?xml version="1.0" encoding="utf-8"?>

<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="btn1"/>
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="btn2"/> </merge>

此布局通常要与<include />结合使用,用于删除不必要布局曾经。

当<merge />布局文件被引入到其它布局中是,<merge />会被忽略。

使用此布局需要注意的是,布局中的控件属性要根据引用它们的父布局来设置。最好的方法是现将<merge />换为将来的父布局类型,等编码结束在换回<merge />。

3.<ViewStub />

    <ViewStub
android:id="@+id/vs"
android:layout="@layout/test"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>

<ViewStub />的特点是当你需要时才会加载,这样可以减少不必要的内存开支。

显示<ViewStub />

        ViewStub vs = (ViewStub) findViewById(R.id.vs);
View view = vs.inflate();

inflate方法只可以调用一次,此方法调用以后ViewStub与普通布局就没什么区别了,

之后就可以获取其中的组件进行控制。


要查布局情况,可以使用SDK中的monitor工具进行产看。

想要看看UI的绘制情况,可以通过设备中的开发者选项显示GPU绘制,能很清楚地看到各个部分的绘制次数。

上一篇:Go语言 并发编程


下一篇:专家预言 2040 年,机器将代替人类编写代码!程序员要下架啦?