【问题标题】:9-patch - 1px border is blurred9-patch - 1px 边界模糊
【发布时间】:2019-05-07 00:48:32
【问题描述】:

我在 HTC Desire 上进行测试,这是一个 hdpi 设备。看图就明白问题所在了:

这是我的 9-patch(使用标准 9-patch 工具制作)的外观(放大):

左图是我的 Photoshop 文件,右图是我设备的屏幕截图。如您所见,存在巨大差异。假设阴影不是那么重要,但模糊的边界看起来很糟糕。

我的 9-patch png 错了吗?我该怎么做才能获得漂亮的清晰 1px 实心边框?

【问题讨论】:

  • 在使用 9-path 工具时必须做一些事情。您是否对不同可绘制文件夹中的每个 png 使用 9-path 工具?
  • 您的 9-patch 是否正确命名为 filename.9.png?
  • 而不是线,只需在 draw9patch 中图像的四个侧面放置一个点。它会起作用的。
  • 它的名字是正确的,而且看起来还不错。但我把它放在drawable中,而不是drawable-hdpi中。这是导致问题的原因吗?我的意思是,它在每个文件夹(drawable、drawable-mdpi、drawable-hdpi 等)中都是相同的图像。 android 对它们的处理方式是否有所不同?
  • 如果只想要一份,放在drawable-nodpi文件夹中。

标签: android nine-patch


【解决方案1】:

您应该为不同可绘制文件夹中的每个 png 使用 9-path 工具。有时问题是,Android 尝试转换 png 并模糊黑线,导致以后无法正常显示。

【讨论】:

    【解决方案2】:

    要避免这个问题,只需将 9 补丁放到 drawable-no-dpi 文件夹中。 这允许对所有密度都有一个图像。并且android不会触摸图像。

    这主要是我为我的项目所做的,除非我真的想在密度之间有所不同。在这种情况下,我会为每个密度创建一个 9-patch。

    替代解决方案:

    将顶部和左侧标记每边缩小 1 个像素。这将确保可缩放部分不与灰色边框重叠。

    【讨论】:

    • 是的,如果您不将每个可绘制对象放在不同的 dpi 中,这就是解决方案(正如您在这些旧 cmets 中看到的那样)。
    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多