【问题标题】:Bad 'Patches' in 9-Patch File9 补丁文件中的错误“补丁”
【发布时间】:2011-09-15 06:06:29
【问题描述】:

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

【问题讨论】:

  • “坏补丁”确实令人困惑,但不会阻止您的可绘制对象工作。开发网站表示,这些补丁网站"may produce artifacts in the graphic when stretched" 基本上是一个警告。如果您查看很多库存的 Android 可绘制对象,您会发现它们包含“坏补丁”。所以只需对它们进行测试,如果它们看起来不错,我就不用担心了。
  • 这实际上是我最近发现的答案。您应该将其发布为实际答案而不是评论,我会将其标记为已接受(因为其他答案具有误导性)。
  • PureSpider 的回答是正确的。不确定您是否可以重新接受正确的答案。您的图像有渐变。您所需要的只是拉伸 1 或几个像素以保持该渐变。它将有助于消除那些坏补丁,尤其是使用新的更大屏幕(如 HTC One X 和 Galaxy S3),您会看到不同之处。

标签: android nine-patch


【解决方案1】:

老了,但我也有同样的问题。 “坏补丁”的事情肯定是令人困惑的,但不会阻止你的 drawable 工作。开发者网站表示,这些补丁网站"may produce artifacts in the graphic when stretched"‌​.

如果您查看大量库存的 Android 可绘制对象,您会发现它们包含“坏补丁”。所以只需对它们进行测试,如果它们看起来不错,我就不用担心了。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      HERE,您可以一键制作适用于所有分辨率(XHDPI、HDPI、MDPI 和 LDPI)的 9 补丁图像。

      如果您有任何疑问,请告诉我,如果对您有帮助,请点赞。

      【讨论】:

      • 即使我也遇到过同样的问题。谢谢普拉蒂克,你的回答很有效。
      【解决方案4】:

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

      9-patch: bad patches everywhere…

      【讨论】:

        【解决方案5】:

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

        来自 developer.android.com:

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

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

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

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

        希望对您有所帮助。

        【讨论】:

        • 我在图像周围添加了一个 1 像素的黑色边框,但这并没有改变结果。
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2016-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-02
          • 2011-05-15
          • 2023-04-03
          • 1970-01-01
          相关资源
          最近更新 更多