Android UI学习 - FrameLayou和布局优化
2010-05-06 16:09:00 来源:WEB开发网< include > 重用layout代码
如果在某个布局里面需要用到另一个相同的布局设计,可以通过< include > 标签来重用layout代码:
1. < ?xml version="1.0" encoding="utf-8"? >
2. < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="vertical"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent" >
6.
7. < include android:id="@+id/layout1" layout="@layout/relative" / >
8. < include android:id="@+id/layout2" layout="@layout/relative" / >
9. < include android:id="@+id/layout3" layout="@layout/relative" / >
10.
11. < /LinearLayout >
效果图
include
这里要注意的是,"@layout/relative"不是引用Layout的id,而是引用res/layout /relative.xml,其内容是前面文章介绍RelativeLayout的布局代码。
另外,通过< include >,除了可以覆写id属性值,还可以修改其他属性值,例如 android:layout_width,android:height等。
< viewstub > 延迟加载
(转自http://rainhomepage.appspot.com/2010/01/use-viewstub-to-optimize-the-layout-of)
ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,在需要的时候再加载View,可Java中常见的性能优化方法延迟加载一样。
当调用ViewStub的setVisibility函数设置为可见或则调用 inflate初始化该View的时候,ViewStub引用的资源开始初始化,然后引用的资源替代ViewStub自己的位置填充在ViewStub的 位置。因此在没有调用setVisibility(int) 或则 inflate()函数之前 ViewStub一种存在组件树层级结构中,但是由于ViewStub非常轻量级,这对性能影响非常小。 可以通过ViewStub的inflatedId属性来重新定义引用的layout id。 例如:
1. < ViewStub android:id="@+id/stub"
2. android:inflatedId="@+id/subTree"
3. android:layout="@layout/mySubTree"
赞助商链接