今天继续填坑,同时也挖新坑。
Android xml 效果之 layer drawable
layer drawable 可以用于多图层叠加绘制
一、基本属性
基本属性如下:
<?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
每一个item代表一个图层,先写的item会先绘制,最后的item绘制在顶层
drawable 指定图片资源
top、right、bottom、left 这四个是指图片位置的偏移量
一般情况下,item 里的图片都会缩放适应控件的大小,可以通过设置偏移量来控制位置。
如果不想被缩放图片,可以使用 bitmap 节点,这样还可以额外指定一些属性。
<item android:drawable="@drawable/image" />
<item>
<bitmap android:src="@drawable/image"
android:gravity="center" />
</item>
节点 bitmap
属性如下
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@[package:]drawable/drawable_resource"
android:antialias=["true" | "false"]
android:dither=["true" | "false"]
android:filter=["true" | "false"]
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:mipMap=["true" | "false"]
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
android:dither 当位图和屏幕像素不同时,启用或禁用抖动位图(比如位图像素为 ARGB8888 屏幕像素为 RGB 565)
android:filter 启用或禁用位图过滤,启用后,当位图被收缩或拉伸时有光滑外观
android:gravity 指定位图在容器的位置重心,等同控件的 gravity
android:mipMap 启用或禁用 mipMap 提示,默认禁用 (位图需要缩小50%以上时,开启mipMap获得更好的显示效果,要求api 大于等于17)参看这里
android:tileMode 设置平铺模式,启用后 gravity 将失效
- disabled 默认值,不启用平铺功能
- clamp 复制位图边缘颜色,充满容器的空白部分(边缘拉伸)
- repeat 复制整体位图平铺,充满整个容器 (整体平铺)
- mirror 复制整体位图,交替翻转平铺,充满整个容器(相邻的两张图是对称的)
翻译误差,可参看官方文档
二、效果