布局优化
目的:以小的内存代价实现流畅平滑的界面,在列表的组件(ListView,GridView)中的布局优化效果尤为明显。
优化方法:
- 尽量使用RelativeLayout
- 对可重用UI组件使用
<include/>
引用 - 使用
<merge/>
标签来减少布局嵌套层次 - 使用
<ViewStub>
标签对UI组件进行运行时加载,即延时加载(根据条件确定是否加载),未加载是不占用布局空间和内存空间的。
附:
<include/>
的使用方法:
<include android:id="@+id/id名"
layout="@layout/引用的布局名"/>
注意:这里是layout,不是android:layout。
<merge/>
的使用方法:
将根视图的布局方式用<merge></merge>
来代替,如:
<FrameLayout>
<FrameLayout>
</FrameLayout>
<ImageView android:id="@+id/im">
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/backgroud"
/>
</FrameLayout>
变为:
<merge>
<FrameLayout>
</FrameLayout>
<ImageView android:id="@+id/im">
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/backgroud"
/>
</merge>
<ViewStub/>
的使用方法:
<ViewStub android:id="@+id/stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout="@layout/要延时加载的UI组件"
/>
最后,在java代码中获取ViewStub并调用.inflate()
方法或.setVisibility(View.VISIBLE)
即可实现加载该UI。
注意:上面两个方法只能调用一次,否则会异常。