安卓NinePatch .png文件格式是什么?

13

Android NinePatch图像似乎是带有额外信息的标准.png文件。是否有规范格式可以参考,因为我想在其他平台上实现此功能?

7个回答

11

这个链接是我找到的最简单的关于这个主题的链接。


更改为被接受的答案,因为此链接提供了有关可伸缩与填充边框功能的更好信息。 - Roddy

7

我希望有一个有记录的规范,但我想那样也足够好了! - Roddy
我认为不需要更多的文档,因为它只是一个带有1像素边框的普通png文件。 - stealthcopter
我对1像素边框的解释还不是很清楚,特别是在非连续像素选择和顶部与底部边距之间的区别方面。 - Roddy
根据我的经验,每个边距对(上/下和左/右)必须相同,否则会导致应用程序编译失败。即所选内容必须是连续的。这只是将图像分成四个静态角落和由黑色像素标记的剩余区域进行拉伸。 - stealthcopter
4
隐形直升机,你说错了。所有方面都是独立的。每边最多可以有5个部分。例如,___ _ ___ ____ _将是有效的顶部比例尺。 - Richard Lalancette
右侧和底部包含与顶部和左侧无关的信息。在Android中,顶部和左侧是可伸缩区域,底部和右侧用于放置内容。 - Sinthia V

6
我强烈建议您不要在其他平台上实现9patch系统,原因有几个。
我使用Android的开发工具已经一年了,并且广泛使用9patch文件。
它们是一场噩梦。PNG不是数据格式,而是图像格式。在.9.png文件中混合两者会引发问题。
9patch文件是一个糟糕的想法,因为它们将图像和数据格式组合成一个单一的文件,既不能完全由设计师管理,也不能完全由开发人员管理。
九宫格文件:在维护、支持和更新阶段的某个时候,你会后悔参与其中。
也许在未来的某个日期,如果一些优质工具支持9patch文件(例如,PS CS4不理解9patch文件作为一种特定格式,也不遵守有效的九宫格格式规则)。
现有的九宫格文件工具非常糟糕,大多数我雇用的设计师都无法使用。

+1表示非常赞同的观点 - 我同意这些工具并不是很好。然而,考虑到我需要“可扩展”图片的9-patch功能,我还有什么其他选择呢?重新发明轮子可能更加愚蠢。 - Roddy
1
我认为9-patch概念是一个非常好的想法,但实现方式却是最糟糕的。另一种方法是使用PNG文件(行业标准)和包含4个维度的XML格式。Stretch X、Stretch Y、Pad X和Pad Y。然后,使用自定义解析器(XML而不是PNG),并操作PNG进行拉伸。这样,您的PNG仍可重用于其他事物(并在Photoshop中工作),而您的布局市场位于程序员可以轻松使用的XML中。 - Cory Trese
2
我完全不同意Cory的观点。我现在已经使用Photoshop中的9-patch PNG 10个月了,效果非常好。事实上,我的用户界面看起来非常清晰,这种技术太棒了! - Richard Lalancette
我认为人们不理解它们。 - Sinthia V
我发现支持所有数据九宫格的类比Android使用的“in-PNG”格式要优秀得多。我已经将http://yannickloriot.com/library/ios/cccontrolextension/Classes/CCScale9Sprite.html实现到Java中,现在拥有了最佳的两个世界。清晰的UI,没有任何PNG或9patch格式的开销。 - Cory Trese

2

1

不错的链接,介绍文本激励了这9个参数;因此,9 patch是将位图放置到画布坐标的9个感兴趣区域的明确定义? - Vass

1

我发现这个链接非常有用:博客文章链接。它使用了一些示例来说明在创建9 patch时定义的不同边框。它展示了额外信息如何用于缩放图像的尺寸(x,y)。

甚至还有一个Richard L.在最后留下了一个很好的评论,他说你可以通过在边框中添加断点来保护图像免受缩放的影响;例如,在图像中不缩放某些部分。


0
我花了一些时间才明白9 patch文件的扩展名应该是xxxx.9而不是xxx.9.png。

在这种情况下,它会完全忽略9 patch数据。 - MrJre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接