9色块是可拉伸图像,其中可以拉伸的区域由透明边框上的黑色标记定义。
这里有一个很棒的教程。
尽管年代久远,它仍然非常有价值,它帮助我们许多人深刻理解了9补丁齿轮。
不幸的是,最近该页面已放下一段时间(目前再次打开)。
因此,需要在我们可靠的服务器上为Android开发人员提供该页面的物理副本。
这里是。
在我开发第一个Android应用程序时,我发现9-patch(aka 9.png)令人困惑,且文档记录不充分。不久后,我终于了解了它的工作原理,并决定将一些东西放在一起以帮助其他人解决它。
基本上,9-patch使用png透明度执行9切片或scale9的高级形式。辅助线是在图像边缘绘制的1像素黑色直线,用于定义图像的缩放比例和填充度。通过命名您的图像文件名.9.png,Android将识别9.png格式,并使用黑色辅助线缩放和填充位图。
以下是基本指南:
如您所见,图像的每一面都有向导。TOP和LEFT指南用于缩放图像(即9切片),而RIGHT和BOTTOM指南则定义填充区域。
黑色指导线已从您的图像中切除/删除-它们不会显示在应用程序中。辅助线只能是一个像素宽,因此,如果要使用48×48的按钮,则png实际上将为50×50。任何厚于一个像素的内容都将保留在图像中。(我的示例使用4像素宽的辅助线以提供更好的可见性。它们实际上应该仅为1像素)。
您的向导必须为纯黑色(#000000)。即使颜色略有不同(#000001)或alpha也会导致其失效并正常拉伸。失败也不会很明显*,它会默默地失败!是。真。现在你知道了。
另外,您还应记住,一像素轮廓的其余区域必须完全透明。这包括图像的四个角-应该始终清晰。这可能是比您意识到的更大的问题。例如,如果您在Photoshop中缩放图像,它将添加抗锯齿像素,其中可能包括几乎不可见的像素,这也会导致其失败*。如果必须在Photoshop中缩放,请使用“重新采样图像”下拉菜单(在“图像大小”弹出菜单的底部)中的“最近邻”设置,以在导板上保持清晰的边缘。
*(2012年1月1日更新)这实际上是最新开发套件中的“修复程序”。以前,它会表现为您的所有其他映像和资源突然中断,而不是实际中断的9补丁映像。
TOP和LEFT指南用于定义图像的可缩放部分-LEFT用于缩放高度,TOP用于缩放宽度。以一个按钮图像为例,这意味着该按钮可以在黑色部分内水平和垂直拉伸,而其他所有区域(例如角落)都将保持相同的大小。允许您使用可缩放至任意大小并保持统一外观的按钮。
重要的是要注意,9色块图像不会按比例缩小,而是按比例放大。因此,最好从尽可能小的开始。
另外,您可以在比例线的中间保留一些部分。因此,举例来说,如果您的按钮中间有一个光滑的光泽边缘,则可以在LEFT指南的中间保留几个像素。图像的中心水平轴不会缩放,只能缩放图像上下的部分,因此您的鲜明光泽不会出现锯齿或模糊。
填充区域指南是可选的,并提供了一种方法来定义诸如文本标签之类的区域。填充确定图像中要放置文本,图标或其他东西的空间。9-patch不仅适用于按钮,还适用于背景图像。
上面的按钮和标签示例只是为了说明填充的概念而被夸大了-标签并不完全准确。老实说,由于按钮标签通常是一行文本,因此我还没有体验过Android如何执行多行标签。
最后,这里很好地演示了比例尺和填充尺如何变化,例如带有背景图像和完全圆形的侧面的LinearLayout:
在此示例中,未使用LEFT指南,但仍然需要我们提供指南。背景图片不会垂直缩放;它只是水平缩放(基于TOP指南)。观察填充参考线时,“右”和“底部”参考线延伸到它们与图像弯曲边缘相交的地方。这使我可以将圆形按钮放置在靠近背景边缘的位置,以获得紧实的外观。
就是这样了。一旦获得9补丁,超级简单。这不是进行缩放的理想方法,但是填充区域和多行缩放指南的确比传统的9切片和scale9提供了更大的灵活性。试试看,您很快就会发现。