Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不同密度的不同9面片图像?_Android_Nine Patch - Fatal编程技术网

Android 不同密度的不同9面片图像?

Android 不同密度的不同9面片图像?,android,nine-patch,Android,Nine Patch,我在MDPI/HDPI/xhdpi中有相同的9-patch图像。是否有一个特殊的原因使它不能保存为最小的尺寸?当内容较大时,可拉伸区域会自动缩放,例如背景为9面片 背景示例: mdpi: hdpi: xhdpi:您不需要在所有3个文件夹中放置不同大小的9补丁图像。只需将分辨率最高的一个放在可绘图文件夹中即可。Android将为您的所有不同密度选择它 此外,图像的清晰度取决于图像的分辨率。如果保存最小的尺寸(即分辨率最低),您将看到高密度设备出现模糊拉伸。如果背景图像是纯彩色的,这将不明显。当背

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

背景示例:

mdpi:

hdpi:


xhdpi:

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

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

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


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

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

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


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

它将从最高密度调整图像大小,以匹配所选密度,并从调整大小的图像上使用九块补丁机制来拉伸图像。这将导致图像模糊,不建议使用。9-面片缩小?我认为只能放大。如果Android从xhdpi文件夹中为mdpi手机选择一个可绘制的图像,那么不管它们是否是9-Patch,它都会缩小图像。更多信息请参见我的答案。我也很难学会这一点;)对于真正的设备来说可能不是这样,但Android emulator处理9-Patch资产的方式与其他Drawable不同。具有API 8-10的仿真器需要基线9-Patch资产,否则将因ResourceNotFoundException崩溃。其他资产没有这个问题。在API 17上,模拟器没有崩溃,但9-patch资产没有按预期拉伸,通常呈现为完全黑色。似乎必须为所有支持的密度创建9补丁资产,以确保你的应用程序不会崩溃或看起来很可笑。现在明白了。向Bielefeld致意:-)是的,关于2像素高的示例,你是对的。虽然我没有注意到图像缩小的问题。有可能我没有处理会显示差异的图像。谢谢你的提示:)下次我会记住这一点。如果你懒惰,你可以试试这个工具:我刚刚上传了它,它可以生成任何png的ldpi、mdpi和hdpi版本,或者九补丁png