layer-list实现图层叠加的效果

layer-list是用来实现多个图层的重叠显示,每个item即为一个图层,最后一个item显示在最上层。

例如实现下面的效果:

           +                    =           
第一个图片为第一个item,第二个图片为第二个item,由于要使得第二种图片处在第一个图片的中央,通过使用第二个图片的四周距离即可实现此效果。

下面是源代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/b"
       
        ></item>
    <item android:drawable="@drawable/a"
          android:left="10.0dip"   
           android:top="18.0dip"   
           android:right="25.0dip"   
           android:bottom="35.0dip"
        ></item>
</layer-list>
如果想要在代码中实现此效果:
((ImageView) findViewById(R.id.layerdss1))
    .setImageDrawable(getResources().getDrawable(
      R.drawable.drawagble_layer));

  Resources r = getResources();
  Drawable[] layers = new Drawable[2];
  layers[0] = r.getDrawable(R.drawable.white);
  layers[1] = r.getDrawable(R.drawable.drawagble_layer);
  LayerDrawable layerDrawable = new LayerDrawable(layers);
  ((ImageView) findViewById(R.id.layerdss))
    .setImageDrawable(layerDrawable);

  Bitmap bm = BitmapFactory
    .decodeResource(getResources(), R.drawable.cwj);
  Drawable[] array = new Drawable[3];
  array[0] = new PaintDrawable(Color.BLACK); // 黑色
  array[1] = new PaintDrawable(Color.WHITE); // 白色
  array[2] = new BitmapDrawable(bm); // 位图资源
  LayerDrawable ld = new LayerDrawable(array); // 参数为上面的Drawable数组
  ld.setLayerInset(1, 1, 1, 1, 1); // 第一个参数1代表数组的第二个元素,为白色
  ld.setLayerInset(2, 2, 2, 2, 2); // 第一个参数2代表数组的第三个元素,为位图资源
  ((ImageView) findViewById(R.id.testimage)).setImageDrawable(ld);
不只是图片的叠加像是圆角效果,点击效果等都可以进行叠加,例如想要实现一个文本框底部没有边线上边有两个圆角的效果,就可以先一个item圆角黑色边框矩形,第二个边框使用相同的圆角的白色矩形边框然后再设置top,right,left边距则就可以获得想要的效果。

  
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@color/order_title" />

            <stroke
                android:width="1dp"
                android:color="@color/orange" />

            <corners
                android:bottomLeftRadius="0.1dp"
                android:bottomRightRadius="0.1dp"
                android:topLeftRadius="5dp"
                android:topRightRadius="5dp" />
        </shape>
    </item>
    <item
        android:left="1dp"
        android:right="1dp"
        android:top="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/order_title" />

            <stroke
                android:width="1dp"
                android:color="@color/order_title" />

            <corners
                android:bottomLeftRadius="0.1dp"
                android:bottomRightRadius="0.1dp"
                android:topLeftRadius="5dp"
                android:topRightRadius="5dp" />
        </shape>
    </item>

</layer-list>



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值