1,介绍:
-
一个LayerDrawable是一个可以管理一组drawable对象的drawable。在LayerDrawable的drawable资源按照列表的顺序绘制,列表的最后一个drawable绘制在最上层。
2, LayerDrawable对于xml的标签是<layer-list>其语法如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</layer-list>
【1】 一个layer-list可以包含多个item,而每个item则表示一个Drawable。下面我们来说明一下item的一些属性
属性 | 解析 |
android:id | 资源ID,一个为这个item定义的唯一的资源ID。 使用:”@+id/name”.这样的方式。可以检索或修改这个drawable通过下面的方式:View.findViewById() or Activity.findViewById(). |
android:top | Integer,Drawable相对于View的顶部的偏移量,单位像素 |
android:right | Integer,Drawable相对于View的右边的偏移量,单位像素 |
android:bottom | Integer,Drawable相对于View的底部的偏移量,单位像素 |
android:left | Integer,Drawable相对于View的左边的偏移量,单位像素 |
android:drawable | Drawable资源,可以引用已有的drawable资源,也可在item中自定义Drawable。默认情况下,layer-list中的Drawable都会被缩放至View的大小,因此在必要的情况下,我们可以使用android:gravity属性来控制图片的展示效果,防止图片变形或者被过度拉伸。 |
1,介绍:
-
一个LayerDrawable是一个可以管理一组drawable对象的drawable。在LayerDrawable的drawable资源按照列表的顺序绘制,列表的最后一个drawable绘制在最上层。
2,
LayerDrawable对于xml的标签是<layer-list>其语法如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</layer-list>
【1】
一个layer-list可以包含多个item,而每个item则表示一个Drawable。下面我们来说明一下item的一些属性
属性
|
解析
|
android:id
|
资源ID,一个为这个item定义的唯一的资源ID。 使用:”@+id/name”.这样的方式。可以检索或修改这个drawable通过下面的方式:View.findViewById() or Activity.findViewById().
|
android:top
|
Integer,Drawable相对于View的顶部的偏移量,单位像素
|
android:right
|
Integer,Drawable相对于View的右边的偏移量,单位像素
|
android:bottom
|
Integer,Drawable相对于View的底部的偏移量,单位像素
|
android:left
|
Integer,Drawable相对于View的左边的偏移量,单位像素
|
android:drawable
|
Drawable资源,可以引用已有的drawable资源,也可在item中自定义Drawable。默认情况下,layer-list中的Drawable都会被缩放至View的大小,因此在必要的情况下,我们可以使用android:gravity属性来控制图片的展示效果,防止图片变形或者被过度拉伸。
|
【2】
当然我们也可以在代码中实现这里仅给出示例
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.image1);
Drawable[] drawables=new Drawable[3];
drawables[0]=new BitmapDrawable(bitmap);
drawables[1]=new BitmapDrawable(bitmap);
drawables[2]=new BitmapDrawable(bitmap);
LayerDrawable layer=new LayerDrawable(drawables);
//设置图层边界距离
layer.setLayerInset(0, 20, 20, 0, 0);
layer.setLayerInset(1, 40, 40, 0, 0);
layer.setLayerInset(2, 60, 60, 0, 0);
ImageView imageView=(ImageView)findViewById(R.id.imgView);
imageView.setImageDrawable(layer);
3,
利用layer-list的叠层效果实现一个文本输入框的底部横线背景。
【1】实现效果:
![](https://i-blog.csdnimg.cn/blog_migrate/0eee6bfcd00905df9261081daf82b57e.png)
【2】 实现代码:
-
layer_drawable文件
<?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/colorAccent" />
</shape>
</item>
<item android:bottom="6dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff"/>
</shape>
</item>
<item android:bottom="2dp"
android:left="2dp"
android:right="2dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
-
应用到EditText上的代码:
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/layer_drawable"
/>
4,
利用<layer-list>标签来实现一个带阴影的圆角矩形
【1】实现效果:
![](https://i-blog.csdnimg.cn/blog_migrate/b1d04f34fa78811d5855c268de64776a.png)
【2】实现代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 灰色阴影 内容距离左边2dp,距离顶部4dp-->
<item
android:left="2dp"
android:top="4dp">
<shape>
<solid android:color="@android:color/darker_gray" />
<corners android:radius="10dp" />
</shape>
</item>
<!-- 白色前景 内容距离底部4dp 右边2dp-->
<item
android:bottom="4dp"
android:right="2dp">
<shape>
<solid android:color="#FFFFFF" />
<corners android:radius="10dp" />
</shape>
</item>
</layer-list>
更多关于Drawable 资料:
https://blog.csdn.net/cricket_7/category_9564229.html