我正在尝试使用 Android SDK 中的 Draw9Patch 工具,但在使用 Draw9Patch 打开我的图像后,它立即将我的所有图像区域显示为“坏补丁”。我手动绘制了定义可拉伸区域的线条,但是我不确定这是否会正常工作。有人可以解释为什么这个特定图像不是“好补丁”吗?这个问题的其他 Stackoverflow 答案似乎与我的问题无关,或者我不理解它们。
老了,但我有同样的问题。 “坏补丁”的事情肯定令人困惑,但不会阻止您的绘图工作。开发者网站说,这基本上是一个警告,那些补丁网站“拉伸时可能会在图形中产生伪影”u200c .
如果你查看大量 Android 可绘制资源,你会发现它们包含“坏补丁”。所以只要测试一下,如果它们看起来不错,我就不会担心。
迟到的答案,但 9patch 工具似乎正在分析拉伸区域的像素是否发生变化,这意味着在可拉伸区域中一个条带与其他条带不同,如果不小心这样做可能会产生难看的拉伸伪影。
我做了一个小的(丑陋的)例子来形象化:
在第一张图片中,没有坏补丁(除了中间那个,忽略它)。
那是因为拉伸区域都是同一种颜色,像素条都是一样的:
然而,在第二张图片中,顶部和底部也被标记为坏的,因为渐变从那里开始并且水平像素带不再与其余部分相同(它们包含更多的蓝色/红色),这可能会导致伪影如果无意中使用:
我找到了制作 9-patch 图像的最佳和最简单的答案。
从HERE,您只需单击一下即可为所有分辨率制作 9 色块图像 - XHDPI、HDPI、MDPI 和 LDPI。
我认为您的边界可能是问题所在:
来自 developer.android.com:
“边框用于定义图像的可拉伸和静态区域。您可以通过在边框的左侧和顶部绘制一条(或多条)1 像素宽的黑线来指示可拉伸部分(其他边框像素应该是完全透明或白色的)。您可以根据需要拥有任意数量的可拉伸部分:它们的相对大小保持不变,因此最大的部分始终保持最大。”
看起来你有填充框,但你的图像和框之间没有空间。这意味着 Android 可能会将它们解释为边框,而不是填充框(我相信)。
尝试在图像周围制作一个 1 像素的黑色边框。填充框是可选的,但应该通过一些透明像素与图像分开。
大多数情况下,我建议尝试尽可能接近您在here中找到的示例。
希望有帮助。
您应该尝试在按钮上定义一个像素的拉伸区域。你没有渐变效果,所以结果是一样的。坏补丁通常由左侧拉伸定义生成。