Android组合布局

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

比如我有一张照片,我想给他加个相框,而这张照片必须是可以被客户自行选择的,整个相片相框又必须作为一个图片放在一个固定的位置。其实如果是一张固定的照片,那么一开始就可以用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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值