前言
上篇文章,主要说明Bitmap(位图)对象,此篇主要介绍特殊的位图(Nine-Patch位图)和Layer List。
那这种效果怎么实现,这就是Nine-Patch的功效。
一、Nine-Patch位图
格式
filename.9.png
这是可以自定义拉伸区域的位图。后缀为.9.png。
制作
制作Nine-Patch格式的位图,需要使用android提供的draw9patch.bat工具。此工具在SDK目录下的tools文件夹中。
说明
2、Nine-Patch也是一种特殊的Bitmap,但是在使用的过程中,除了直接使用resourceId赋值与src或者background之外,平时我们也有需要在Java代码中引用。如果是一般的位图(.png)直接使用BitmapDrawable对象或者标签<bitmap>接收,但是如果是Nine-Patch位图,则不能单纯的使用Bitmap或者<bitmap> ,否则Nine-Patch的拉伸效果就失去作用。这时就需要使用<
nine-patch>或者NinePatchDrawable对象
<nine-patch>
语法
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:dither=["true" | "false"] />
解析
xmlns:android
当nine-patch是根标签的时候,这句话是必须要的。
android:src
源文件,此处需要是一个Nine-Patch的文件android:dither
消除抖动。简单点说就是当图像颜色值很丰富(比如通过高级的单反镜头,有216个色系),和手机显示屏能提供的颜色值(比如只有16个色系)不匹配 时,会自动进行补全优化,让画质更好。取值true或者false 。详细《维基百科-dither》
二、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>
解析
layer-list
必须作为根标签。并且需要包含至少一个item。
android:top
距离父容器的顶部距离
android:right距离父容器的右边距离
android:bottom距离父容器的底部距离
android:left距离父容器的左边距离
例子
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/bitmap_elements"> </item> <item android:top="20dp" android:left="20dp" android:drawable="@drawable/bitmap_elements2"> </item> <item android:top="40dp" android:left="40dp" android:drawable="@drawable/bitmap_elements3"> </item> </layer-list>
或者格式为这样:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/android_red" android:gravity="center" /> </item> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android_green" android:gravity="center" /> </item> <item android:top="20dp" android:left="20dp"> <bitmap android:src="@drawable/android_blue" android:gravity="center" /> </item> </layer-list>
效果
完毕.