9-Patch文件中的“补丁”错误

时间:2011-09-15 06:06:29

标签: android nine-patch

我正在尝试使用Android SDK中的Draw9Patch工具,但是在使用Draw9Patch打开我的图像后,它立即将我的所有图像区域显示为“Bad Patch”。我手动绘制了定义可伸展区域的线条,但我不确定这是否可以正常工作。有人可以解释为什么这个特定的图像不是一个“好补丁”?其他Stackoverflow对这个问题的回答似乎与我的问题无关,或者我不理解它们。

Example of Draw9Patch Bad Patches Original Image

6 个答案:

答案 0 :(得分:26)

老了,但我有同样的问题。 “坏补丁”的事情肯定令人困惑,但不会阻止你的工作。开发网站表示,基本上警告那些补丁网站"may produce artifacts in the graphic when stretched"‌

如果你看看很多Android抽奖机,你会发现它们包含“坏补丁”。所以只要测试它们,如果它们看起来很好,我就不用担心了。

答案 1 :(得分:15)

迟到的答案,但似乎9patch工具正在分析您的拉伸区域是否在其像素中变化,这意味着一个条带与可伸展区域中的其他条带不同,如果意外完成,可能会产生难看的拉伸伪影。

我制作了一个小(丑陋)的例子来形象化:
在第一张图片中,没有坏贴片(除了中间贴片,忽略它) 那是因为拉伸区域都是相同的颜色,像素条都是相同的: No bad patches shown

然而,在第二张图片中,顶部和底部部分也被标记为坏,因为渐变从那里开始并且水平像素带不再与其余部分相同(它们包含更多的蓝色/红色),这可能如果使用不当,会导致伪影: Bad patches created

答案 2 :(得分:11)

我找到了制作9-patch图像的最佳和最简单的答案。

HERE,您只需点击一下即可为所有分辨率制作9补丁图像 - XHDPI,HDPI,MDPI和LDPI。

如果您有任何疑问,请告诉我,如果它对您有所帮助,请告知我们。

enter image description here

答案 3 :(得分:3)

我刚刚发布了一篇关于Bad Patches的中文帖子。它解释了坏补丁的基本逻辑,并包含一些征服它们的建议。随意查看:

9-patch: bad patches everywhere…

bad patches

答案 4 :(得分:2)

我在想你的边界可能是个问题:

来自developer.android.com:

“边框用于定义图像的可伸缩和静态区域。您可以通过在边框的左侧和顶部绘制一条(或多条)1像素宽的黑线来指示可伸展的区域(其他边框像素应该是完全透明或白色)。您可以拥有任意数量的可伸缩部分:它们的相对大小保持不变,因此最大的部分始终保持最大。“

看起来您有填充框,但图像和框之间没有空格。这意味着Android可能会将它们解释为边框,而不是填充框(我相信)。

尝试在图像周围制作1像素的黑色边框。填充框是可选的,但应通过一些透明像素与图像分开。

大多数情况下,我建议您尽可能接近here找到的示例。

希望有所帮助。

答案 5 :(得分:1)

您应该尝试在按钮上定义一个像素的拉伸区域。您没有渐变效果,因此结果将是相同的。坏补丁通常由左侧拉伸定义生成。