9 个补丁

9 贴片是可拉伸的图像,其中可以拉伸的区域由透明边框上的黑色标记定义。

有一个伟大的教程在这里
虽然它已经很老了,它仍然很有价值,它帮助我们许多人深刻理解了 9 个补丁装备。

不幸的是,最近该页面被搁置了一段时间(它目前再次出现)。

因此,需要在我们可靠的服务器上为 Android 开发人员提供该页面的物理副本。

这里是。

一个简单的 9-PATCH for ANDROID UI 指南 2011 年 5 月 18 日

当我在开发我的第一个 Android 应用程序时,我发现 9-patch(又名 9.png)令人困惑并且记录不清。过了一会儿,我终于明白了它是如何工作的,并决定把一些东西放在一起帮助别人弄明白。

基本上,9-patch 使用 png 透明度来执行 9 切片或 scale9 的高级形式。这些指南是在图像边缘绘制的直线 1 像素黑线,用于定义图像的缩放和填充。通过命名你的图像文件 name.9.png,Android 将识别 9.png 格式并使用黑色指南来缩放和填充你的位图。

这是一个基本的指南地图:

StackOverflow 文档

如你所见,图像的每一面都有指南。TOP 和 LEFT 指南用于缩放图像(即 9 切片),而 RIGHT 和 BOTTOM 指南用于定义填充区域。

黑色指引线会从你的图像中删除/删除 - 它们不会在应用中显示。指南只能是一个像素宽,所以如果你想要一个 48×48 的按钮,你的 png 实际上是 50×50。任何厚于一个像素的内容都将成为你图像的一部分。 (我的例子有 4 像素宽的指南,以提高可见度。它们应该只有 1 像素)。

你的指南必须是纯黑色(#000000)。即使颜色(#000001)或 alpha 略有差异也会导致它失败并正常拉伸。这种失败也不会显而易见*,它无声地失败! 是。真。现在你知道了。

另外,你应该记住,单像素轮廓的剩余区域必须完全透明。这包括图像的四个角落 - 应该始终清晰。这可能是一个比你意识到的更大的问题。例如,如果你在 Photoshop 中缩放图像,它将添加消除锯齿的像素,这些像素可能包含几乎不可见的像素,这也会导致它失败*。如果必须在 Photoshop 中缩放,请使用重新取样图像下拉菜单中的最近邻居设置(位于图像大小弹出菜单的底部)以保持指南上的锐边。

*(2012 年 1 月更新)这实际上是最新开发工具包中的修复。以前它会表现为你的所有其他图像和资源突然破坏,而不是实际破坏的 9 补丁图像。

StackOverflow 文档

TOP 和 LEFT 参考线用于定义图像的可缩放部分 - LEFT 用于缩放高度,TOP 用于缩放宽度。使用按钮图像作为示例,这意味着按钮可以在黑色部分内水平和垂直地伸展,并且其他所有内容(例如角落)将保持相同的大小。允许你拥有可以缩放到任何尺寸并保持统一外观的按钮。

值得注意的是,9 补丁图像不会缩小 - 它们只会向上扩展。所以最好从尽可能小的开始。

此外,你可以省略比例线中间的部分。因此,例如,如果你的中间有一个带有锐利光泽边缘的按钮,则可以在 LEFT 指南的中间省略几个像素。图像的中心水平轴不会缩放,只会缩放其上方和下方的部分,因此你的锐利光泽不会消除锯齿或模糊。

StackOverflow 文档

填充区域指南是可选的,它提供了一种为文本标签等内容定义区域的方法。填充确定图像中放置文本,图标或其他内容的空间。9-patch 不仅适用于按钮,也适用于背景图像。

上面的按钮和标签示例夸大了,只是为了解释填充的想法 - 标签不完全准确。说实话,我没有经历 Android 如何做多行标签,因为按钮标签通常是单行文本。

最后,这里可以很好地演示缩放和填充指南的变化,例如带有背景图像和全圆边的 LinearLayout:

http://i.stack.imgur.com/WOT14.jpg

在这个例子中,没有使用 LEFT 指南,但我们仍然需要有一个指南。背景图像不垂直缩放; 它只是水平缩放(基于 TOP 指南)。查看填充导板,右侧和底部导板延伸到它们与图像弯曲边缘相交的位置。这使我可以将圆形按钮放在靠近背景边缘的位置,以获得紧凑,合身的外观。

就是这样了。一旦你得到它,9 补丁是非常容易的。这不是完美缩放的完美方式,但填充区域和多线缩放导向确实比传统的 9 切片和 scale9 提供更大的灵活性。试一试,你会很快弄明白的。