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

问题描述 投票:0回答:6

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

Example of Draw9Patch Bad Patches Original Image

android nine-patch
6个回答
27
投票

老了,但我有同样的问题。 “坏补丁”的事情肯定令人困惑,但不会阻止您的绘图工作。开发者网站说,这基本上是一个警告,那些补丁网站“拉伸时可能会在图形中产生伪影”u200c .

如果你查看大量 Android 可绘制资源,你会发现它们包含“坏补丁”。所以只要测试一下,如果它们看起来不错,我就不会担心。


17
投票

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

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

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


11
投票

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

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

enter image description here


3
投票

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

9-补丁:到处都是坏补丁……


2
投票

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

来自 developer.android.com:

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

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

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

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

希望有帮助。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.