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 标签设置的所有属性都是无效的。



更多相关文章

  1. Android的第一个项目HelloWorld(疯狂Android讲义)
  2. listView及ScrollView等PadingTop显示问题:android:clipToPaddin
  3. 浅谈Android五大布局(一)——LinearLayout、FrameLayout和Absoult
  4. android 自定义图形之层叠样式 [layer-list] 的使用
  5. Android相对布局和线性布局
  6. Android(安卓)TwoLineListItem
  7. android 菜单导航 (Fragment + RadioGroup)
  8. 玩转Android---UI篇---ImageButton(带图标的按钮)
  9. Html、Flex、Android、JavaGUI、IOS前端开发的总体思路比较

随机推荐

  1. 5.ScrollView无法填充满屏幕
  2. Android(安卓)-- 生命周期
  3. Android(安卓)- 组件工具箱(widget tool
  4. Android中listview中的button
  5. 在Android关机中插入脚本
  6. Android平台开发-WIFI 驱动移植 -- 详细
  7. 安卓巴士Android开发神贴整理
  8. android traceview and dmtracedump使用
  9. Android(安卓)布局
  10. Android(安卓)UI大杂烩