样式篇:
Android 项目中资源文件 -- shape篇
Android 项目中资源文件 -- selector篇
Android 项目中资源文件 -- layer-list篇
我们可以使用 shape
、selector
实现一些日常开发中的常见样式。但是有一些稍微复杂一些的样式效果我们可以使用 layer-list
来实现,这篇文章就来记录一下这个 layer-list
的使用。
都说再学习的过程中,我们要时刻保持一颗充满好奇的内心。 那么问题就来了 layer-list
这到底是个什么东西呢?
带着这个问题 我们可以打开 谷歌官方文档--LayerList的介绍。
图层列表 layer-list
定义
顾名思义 layer-list
,图层别表。 layer-list
是用来创建 LayerDrawable 的,而 LayerDrawable 又是 DrawableResource 的一种,所以简单来说,layer-list
所创建出来的图层列表就是一种 drawable 图形。
原理
layer-list
其实是试图叠加,有点像我们平时写 layout 布局时候的 RelativeLayout,后添加的视图会覆盖住先添加的。在 layer-list
中可以通过控制视图 上下左右 四个方向的距离属性,从而得到不同效果的样式。
文件位置
res/drawable/xxx.xml
文件名用作资源 ID。
资源引用
在 Java 中:R.drawable.xxx
在 XML 中:@[package:]drawable/xxx
语法
<?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>
基本语法就是使用一个 <layer-list> 标签嵌套多个 <item ../>,每一个 <item ../> 就代表一个视图层。
<layer-list>
<item ../>
<item ../>
</layer-list>
<item ../> 的属性介绍
属性名 | 属性说明 |
---|---|
android:drawable |
可绘制对象资源。必备。引用可绘制对象资源 |
android:id |
资源 ID。此可绘制对象的唯一资源 ID |
android:top |
整型。顶部偏移(像素) |
android:right |
整型。右边偏移(像素) |
android:bottom |
整型。底部偏移(像素) |
android:left |
整型。左边偏移(像素) |
默认情况下,所有可绘制项都会缩放以适应包含视图的大小。因此,将图像放在图层列表中的不同位置可能会增大视图的大小,并且有些图像会响应的缩放。为了避免缩放列表中的项目,在 item
元素内使用 bitmap
指定可绘制对象。
<item>
<bitmap
android:gravity="center"
android:src="@drawable/image" />
</item>
使用事例
XML 文件保存在 res/drawable/layers.xml
中:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:gravity="center"
android:src="@drawable/android_red" />
</item>
<item
android:left="10dp"
android:top="10dp">
<bitmap
android:gravity="center"
android:src="@drawable/android_green" />
</item>
<item
android:left="20dp"
android:top="20dp">
<bitmap
android:gravity="center"
android:src="@drawable/android_blue" />
</item>
</layer-list>
然后在布局文件中使用:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/layers" />
最终效果
网友评论