android 9-Patch文件中的错误“Patch”

tpgth1q7  于 2023-04-28  发布在  Android
关注(0)|答案(6)|浏览(177)

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

tf7tbtn2

tf7tbtn21#

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

9-补丁:到处都是不好的补丁

yrwegjxp

yrwegjxp2#

我认为你的边界可能是问题所在
来自developer.android.com:
“边框用于定义图像的可拉伸区域和静态区域。您可以通过在边框的左侧和顶部绘制一条(或多条)1像素宽的黑线来表示可拉伸区域(其他边框像素应该是完全透明的或白色的)。您可以有任意多个可拉伸区域:它们的相对大小保持不变,所以最大的部分总是最大的。”
它看起来像你有填充框,但没有空间之间的图像和框.这意味着Android可能会解释为边界,而不是作为填充框(我相信).
试着在你的图像周围做一个1像素的黑色边框。填充框是可选的,但是应该用一些透明的像素与图像分开。
大多数情况下,我建议尽量接近你在这里找到的例子。
希望能帮上忙。

oknwwptz

oknwwptz3#

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

neekobn8

neekobn84#

旧的,但我有同样的问题。“坏补丁”的事情肯定是令人困惑的,但不会阻止你的drawable从工作。开发网站说,这基本上是一个警告,这些补丁网站"may produce artifacts in the graphic when stretched"‌
如果你看了很多Android的drawables,你会发现它们包含“坏补丁”,所以只要测试它们,如果它们看起来很好,我就不会担心。

hjzp0vay

hjzp0vay5#

答案晚了,但似乎9 patch工具正在分析拉伸区域的像素是否不同,这意味着拉伸区域中的一个条带与其他条带不同,如果不小心这样做,可能会产生丑陋的拉伸伪影。
我做了一个小的(丑陋的)例子来形象化:
在第一张图像中,没有坏的补丁(除了中心的补丁,忽略它)。
这是因为拉伸区域都是相同的颜色,像素条都是相同的:

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

9vw9lbht

9vw9lbht6#

我已经找到了最好的和最简单的答案,使9补丁图像。
从这里,您可以制作所有分辨率的9补丁图像- XHDPI,HDPI,MDPI和LDPI只需单击一下。

相关问题