一、使用标签重用布局

eg:一个公用的布局common.xml

           

在需要重用此布局的地方

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

效果图


2376856-60e54112922a0ce6.png

使用include 引入一个布局文件,include标签除了可以指定id之外,
只能使用android:layout_开头的属性,而且只要
指定了android:layout_这种属性就必须要写
上android:layout_height和android:layout_width,否者
其他的android:layout_属性都无效,一旦在include 中
指定了android:layout_height和android:layout_width之
后,被include 进来的布局的根元素的android:layout_height和
android:layout_width将无效,宽高将和include里面的保持一致,
修改布局后:

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

效果图

2376856-0e67b6bed6ca2249.png
同理如果include 里面写了id标签,被include 的布局的根元素
也指定了id标签,那么将以inclide的id标签为准

二、使用标签合并布局

一般在使用标签的时候会引入多余的嵌套布局,
比如在上面的例子中,布局和被嵌套的布局的最外层都
使用了RelativeLayout,所以被嵌套的布局的RelativeLayout是
多余的,所以标签一般和标签一起使用
来减少布局层级修改common.xml布局

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

这样就去除了多余的RelativeLayout 布局嵌套
merge的一些特性:

  1. merge必须放在布局文件的根节点上。
  2. merge并不是一个View,只是声明了一些视图,等待被添加。
    所以对merge标签设置的所有属性都是无效的。如果通
    过LayoutInflate.inflate方法渲染, 第二个参数必须指定
    一个父容器,且第三个参数必须为true。
    贴一篇作者 江南一点雨 LayoutInflate.inflate的文章
    (http://blog.csdn.net/u012702547/article/details/52628453)
  3. 如果Activity的布局根节点是FrameLayout,可以替换
    为merge标签,这样执行setContentView之后,会减少
    一层FrameLayout节点。
三、使用按需加载布局

在实际开发中很多布局我们并不是一开始就需要加载的
,通常我们可以使用显示和隐藏来实现。但是这样
隐藏的布局在一开始的时候就已经参与绘制了,
会影响绘制的效率。而VIewStub本事继承了View,
它的宽和高都是0,自身并不参与绘制。当我们需要
显示的时候才去加载进来,能提高程序的初始化性能。

一个需要按需加载的布局文件viewstub.xml

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

main.xml文件

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

在需要显示的时候

ViewStub viewStub = (ViewStub) findViewById(R.id.viewstub); viewStub.inflate();

或者

 mViewStub = (ViewStub) findViewById(R.id.viewstub);        mViewStub.setVisibility(View.VISIBLE);

当调用infalte或者ViewStub.setVisibility(View.VISIBLE);时,
先从父视图上把当前ViewStub删除,再把加载的android:layotu视图添加上

四、LinearLayout增加divider分割线

如果我们要给LinearLayout 添加如下图的分割线,通常我们可以
在每一项中间添加一个View,设置view的宽高,和背景,
但是这样不仅浪费资源而且还繁琐,
在android3.0及后面的版本给LinearLayout添加分割线我们可以这样做:
1)在drawable文件下新建shape_divider.xml

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

2)在LinearLayout中添加

android:showDividers="middle"android:divider="@drawable/shape_divider"

效果图


2376856-5a81e6867eb1e694.png

这样便能实现上图中效果。android:divider="@drawable"中的drawable也可以是图片文件,
修改android:divider="@drawable/shape_divider"为android:divider="@drawable/pic" ,
pic是一张图片。效果如下图


2376856-36aa733f0b14ebe9.png
showDividers 一共有下面几个参数值可选 middle|end|beginning|none
middle -- 在每一项中间添加分割线

end -- 在整体的最后一项添加分割线
beginning -- 在整体的最上方添加分割线
none -- 无

五、Space占位

Space控件在布局中只占位置,而不去绘制渲染。
组件中的间隙用Space控件填充比用其它控件
填充可以提高绘制效率。

占位20dp高

更多相关文章

  1. Android(安卓)Fragment的增加,删除,添加
  2. Android(安卓)为联系人添加图片
  3. Android(安卓)WebView嵌套Html 之一
  4. Android(安卓)release版本apk添加数字签名
  5. 移动互联网的新宠:Android之缤纷世界
  6. Android(安卓)KitKat 4.4平台开发-添加USB ADB和MTP功能支持
  7. android对html支持接口总结
  8. Android(安卓): 输入设备键值从底层到应用层的映射流程
  9. android联系人的简易通讯录

随机推荐

  1. NDK Findclass
  2. Android屏蔽开机引导页面
  3. Android M PackageManagerService解析
  4. android的ant脚本自动生成模板
  5. Android Studio 插件(二)
  6. android&&ScaleType android:scaleType="
  7. Android最好看的圆形进度条ProgressBar
  8. 【Android】App界面与顶部状态栏重叠遮盖
  9. Android设备重启(reboot)---Android stud
  10. Andriod开发之浏览器开发(WebView)