【问题标题】:Different 9-patch images for different densities?不同密度的不同 9-patch 图像?
【发布时间】:2012-03-30 10:44:26
【问题描述】:

我在 MDPI/HDPI/xhdpi 中有相同的 9-patch 图像。是否有特殊原因不会将其保存为最小尺寸?当内容较大时,可拉伸区域会自动缩放,例如背景为 9-patch。

示例背景:

mdpi:

hdpi:

xhdpi:

【问题讨论】:

    标签: android nine-patch


    【解决方案1】:

    许多九个补丁非常小,通常不需要为不同的屏幕尺寸重新创建它们。

    在您的示例中,背景的角没有缩放。如果您只是在所有分辨率上使用相同的角,它们在不同的分辨率下会有不同的尺寸。在较小的手机上,角落会显得更大,在较大的手机上,角落会显得更小。

    另一个例子是一条线。如果您有一条具有特殊效果的线,并且您将其创建为 mdpi 屏幕的九个补丁,并且该线是两个像素高。只需在 xhdpi 屏幕上重用此可绘制对象而不进行缩放,就会使您的行在此屏幕上高两个像素。但是因为屏幕的像素更小(分辨率更高,显示尺寸相同),所以线条会显得更细。

    因此,您总是需要为每个分辨率创建一个 9-Patch,或者正如 @Shubhayu 所说,只生成高分辨率的九个补丁并接受如果系统为其他分辨率缩小它们会变得模糊。

    【讨论】:

    • 现在明白了。问候比勒费尔德 :-)
    • 是的,您对 2 像素高的示例是正确的。虽然我没有观察到图像被缩小的问题。我可能没有处理会显示差异的图像。感谢您的提示:) 下次我会记住这一点。
    • 如果你比较懒,可以试试这个工具:code.google.com/p/9patch-resizer我刚刚上传,它可以生成任何png的ldpi、mdpi和hdpi版本,或者九个补丁png
    【解决方案2】:

    您不需要在所有 3 个文件夹中放置不同大小的 9-patch 图像。只需将分辨率最高的放在可绘制文件夹中即可。 Android 将为您所有不同的密度选择它。

    此外,图像的清晰度取决于图像的分辨率。如果保存最小尺寸(即分辨率最低),您会看到高密度设备会出现模糊拉伸,如果背景图像是纯色的,这将不明显。当背景有一些设计/可重复的渐变时,您会注意到差异。

    编辑:自从写了这篇文章后,我发现了更多关于 9-patch 的东西。 9 补丁图像不会按比例缩小。最好是放置最小尺寸的图像。根据它寻找其他密度的方式,您应该为受影响的密度制作 9 块图像。这里有更多关于它的细节,

    http://www.shubhayu.com/android/9-patch-image-designers-vs-developers

    【讨论】:

    • 它会从最高密度调整图像的大小以匹配所选的密度,并且从调整大小的图像中,它将使用九个补丁机制来拉伸图像。这会导致图像模糊,不推荐使用。
    • 9 补丁缩小?我认为只能扩大规模。
    • 如果 Android 从 xhdpi 文件夹中为 mdpi 手机选择一个可绘制对象,无论它们是否为 9-Patch,它都会缩小图像。有关更多信息,请参阅我的答案。我也很难学会这个;)
    • 这可能不适用于真实设备,但 Android 模拟器不会像其他可绘制对象一样处理 9-Patch 资源。具有 API 8-10 的模拟器需要基线 9-Patch 资产,否则它将因 ResourceNotFoundException 而崩溃。其他资产没有这个问题。在 API 17 上,模拟器不会崩溃,但 9-patch 资源不会按预期拉伸,通常呈现完全黑色。似乎必须为所有支持的密度创建 9-Patch 资产,以确保您的应用不会崩溃或看起来很荒谬。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多