Android设计中的.9.png

jopen 10年前

在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整代大小的一种图片格式“.9.png”。 这种图片是用于Android开发的一种特殊的图片格式,它的好处在于可以用简单的方式把一种图片中那些区域可以拉伸,那些区域不可以拉伸设定好,同时可 以把显示内容区域的位置标示清楚。

本文结合一些具体的例子来看下.9.png与.png的资源区别:
Android设计中的.9.png
普通的png资源就不多介绍了,可以明显看到.9.png的外围是有一些黑色的线条的,那些线条是用来做什么的呢?我们来看下放大的图像:
Android设计中的.9.png
放大后可以比较明显地看到上下左右分别有一个黑色的线短,这里分别标注了序号。简单来说,序号1和2标识了可以拉伸的区域,序号3和4标识了内容区域。当设定了按钮实际应用的宽和高之后,横向会拉伸1区域是我像素,纵向会拉伸2区域的像素。如下图:
Android设计中的.9.png
拉伸的含义应该比较容易理解,但是内容区域的标注有什么意义呢?我们来看下图:
Android设计中的.9.png
这里持续设置的文字垂直居中、水平居左的对齐方式。对齐方式是没有问题的,但是对于这种大圆角同时又有些不规则边框的图形来说,错误的标注方式会让排版看起来很混乱。所以我们需要修正内容区域的线段位置和长度。Android设计中的.9.png
把横向的内容区域缩短到圆角以内,总想的内容控制在输入框的高度以内,这样文字就可以正常显示了。

这里还有一种特殊的情况,就是本身.9.png的资源,但是在修改过程中你希望这张.9.png不能被拉伸(在做皮肤的情况中可能会遇到),那怎么办呢? 只要把拉伸区域的点 点在透明像素的地方就可以了这样拉伸的时候就会在拉伸透明部分的像素,而不会拉伸图像本身。如下图:
Android设计中的.9.png
大家可以看到拉伸区域的黑点是可以不连续的。

说了半天的.9.png的用法,那.9.png如何输出呢?有很多种方式可以输出.9.png,比如说用draw9patch.bat这样的工具。

有两点需要特别注意的:

1)最外围的一圈像素必须要么是黑色的,要么是透明的,一点点的半透明的像素都不可以有,比如说99%的黑色或者1%的投影都不可以有。

2)文件的后缀必须是.9.png,不能是.png或是.9.png.png,这样的命名都会导致编译失败。

原文地址:http://isux.tencent.com/android-ui-9-png.html