27

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

Draw9Patch 坏补丁示例 原始图像

4

6 回答 6

27
于 2011-11-25T00:42:58.500 回答
17

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

我做了一个小(丑陋)的例子来形象化:
在第一张图片中,没有坏补丁(除了中间的,忽略它)。
那是因为拉伸的区域都是一样的颜色,像素条都是一样的: 没有显示坏补丁

然而,在第二张图像中,顶部和底部也被标记为坏,因为渐变从那里开始并且水平像素条不再与其余部分相同(它们包含更多的蓝色/红色),如果出现这种情况,这可能会导致伪影无故使用: 创建了错误的补丁

于 2012-06-09T20:30:59.410 回答
11
于 2013-05-31T07:11:42.030 回答
3

我刚刚发表了一篇关于坏补丁的 Medium 帖子。它解释了坏补丁的基本逻辑,并包含了一些关于克服它们的建议。随意检查一下:

9-patch:到处都是坏补丁……</a>

坏补丁

于 2016-04-01T12:22:29.233 回答
2

我认为您的边界可能是问题所在:

来自 developer.android.com:

“边框用于定义图像的可拉伸和静态区域。您可以通过在边框的左侧和顶部(另一个“

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

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

大多数情况下,我建议尽量接近您在此处找到的示例。

希望有帮助。

于 2011-09-15T08:26:46.010 回答
1

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

于 2012-03-22T13:49:40.977 回答