9补丁文件中的“修补程序”错误

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

Draw9Patch Bad Patches的示例原始图像

Solutions Collecting From Web of "9补丁文件中的“修补程序”错误"

老,但我有同样的问题。 “坏的补丁”的东西肯定是混乱的,但不会阻止你的drawable工作。 开发者网站表示,这基本上是一个警告,说明这些补丁网站“可能在延伸时在graphics中产生伪像” 。

如果你看看很多的Android可绘制的股票,你会看到它们包含“坏的补丁”。 所以只要testing一下,如果他们看起来不错,我不会担心。

迟到的答案,但似乎9patch工具是分析如果你的拉伸面积varys在其像素,意思是一个条不同于其他在可拉伸的地区,如果意外做了可能会产生丑陋的拉伸文物。

我做了一个小(丑)的例子来形象化:
在第一个图像中,没有坏的补丁(除了中心之外,忽略)。
这是因为拉伸区域全部是相同的颜色,像素条都是一样的: 没有显示坏的补丁

然而,在第二幅图像中,顶部和底部的部分也被标记为坏,因为梯度从那里开始,并且水平像素条与其余部分不再相同(它们包含更多的蓝色/红色),这可能会导致伪像不经意地使用: 坏的补丁创建

我已经find了最好的和最简单的答案,使9补丁图像。

从这里您可以为所有的分辨率制作一张9张的图像 – XHDPI,HDPI,MDPI和LDPI。

如果您有任何疑问,请告诉我,如果这对您有帮助,请立即join。

在这里输入图像说明

我认为你的边界可能是问题:

来自developer.android.com:

“边框用于定义图像的可伸缩和静止区域,通过在边框的左侧和顶部绘制一个(或多个)1像素宽的黑色线条来指示可拉伸的部分(另一个边框的像素应该是完全透明的或白色的),你可以有任意数量的可拉伸部分,它们的相对尺寸保持不变,所以最大的部分总是保持最大。

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

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

大多数情况下,我build议尽量接近你在这里find的例子。

希望有所帮助。

我刚刚发表了一篇关于Bad Patches的中篇文章。 它解释了不好的补丁的基本逻辑,并包含一些征服它们的build议。 随意检查一下:

9 – 补丁:坏的补丁在世界各地…

坏的补丁

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