Android组合布局

来源:互联网 发布:卖家网数据监控 编辑:程序博客网 时间:2024/06/06 19:15

其实很多复杂的布局都可以切成一小部分的布局然后去组合而成的。

比如我有一张照片,我想给他加个相框,而这张照片必须是可以被客户自行选择的,整个相片相框又必须作为一个图片放在一个固定的位置。其实如果是一张固定的照片,那么一开始就可以用PS把照片和相框做成一张图片的,但要被客户指定的话,也可以把相框和相处做成一个整体的(当然也可以没必要,如果你有自信控制界面不变形的话,这里只是举个例子说明一下)。

图片组合可以使用layer-list标签。在drawable目录下新建个XML文件。

要用2张图片叠加起来,看上去形成一张图片  

 

首先创建一个drawalbe/login_head.xml的文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>  <layer-list    xmlns:Android="http://schemas.android.com/apk/res/android">      <item Android:id="@+id/user_faceback_drawable" android:drawable="@drawable/faceback" />      <item Android:id="@+id/user_face_drawable" android:drawable="@drawable/h001" android:left="10.0dip" android:top="18.0dip" android:right="25.0dip" android:bottom="35.0dip" />  </layer-list>  

然后就可以使用这个组合的图片了,比如在ImageView中显示: 

<ImageView Android:id="@+id/faceImg" android:background="@drawable/login_head" 
Android:layout_width="wrap_content" android:layout_height="wrap_content" />  

java代码中引用: 
((ImageView) findViewById(R.id.imageview)).setImageDrawable(getResources().getDrawable(R.drawable.drawable-layer)  

在代码中也可以实现layer,更可以动态来控制

Resources resources = getResources();    

Drawable[] layers = new Drawable[2];    

layers[0] = r.getDrawable(R.drawable.white);    

layers[1] = r.getDrawable(R.drawable.logo_overlay);    

LayerDrawable layerDrawable = new LayerDrawable(layers)   

((ImageView) findViewById(R.id.imageview)).setImageDrawable(layerDrawable);   

 

在layer-listitem中也可以使用更多的其他属性标签,例如:

<shape>

<gradient android:angle="270" android:endColor="#4559F3"

android:startColor="#4559F3" />

<size android:height="60dp" android:width="320dp" />

<corners android:topLeftRadius="10dip"

        android:topRightRadius="10dip"

        android:bottomLeftRadius="10dip"

        android:bottomRightRadius="10dip"/>

</shape>

第一个item排在最下层,第二个item排在上面,当然还可以排三层、四层......item之间最好产生距离,不然上层的会挡住下层的

有时候有些复杂的布局就不是几个图片组合就能搞定的,然后就需要多个XML布局来组合了。就是一个网页一样,有头部尾部有母版页有控件,可以重复自由组合成一个网页。Android也可以。使用include就能做到,同时可以配合merge

android的merge学习:http://www.cnblogs.com/travelfromandroid/articles/2133206.html

原创粉丝点击