如何为不同密度的屏幕指定图标?

Wow*_*zer 1 android

在开发应用程序时,我注意到有不同的文件,例如drawable和drawable-hdpi。所以我发现这些文件夹适用于不同的图标和图像大小。我的问题是,这两个是两个单独的文件夹,我想知道是否必须将 android 定向到单独文件夹中的图标?

我的意思是,我是否必须首先弄清楚设备的 dpi 类型并设置适当的图标,或者我可以只声明一个可绘制资源,然后 android 会为我找到它吗?

如果我可以设置一个图标名称和可绘制文件,并且 Android 系统将知道在不同的屏幕上使用什么,那么你能向我解释一下这是如何完成的吗?我的意思是它是两个独立的文件drawable 和drawable-hdpi。那么如何在drawable文件夹中设置一个图标图像,并且android知道要为不同设备的drawable-hdpi访问什么内容呢?

Ari*_*Roy 5

有几个问题捆绑在一起,但我将详细解释所有这些问题。

如您所知,有多种 Android 设备具有不同的屏幕尺寸。这就是为什么,根据密度将它们分为几类。如果你还没有读过的,一定要读一下。

这是完整的分类

在此输入图像描述

因此,我们的想法是将所有这些目录分开,而不仅仅是一个“可绘制”文件夹。每当您想在应用程序中放置任何图像或图标时,您需要将不同尺寸的它们正确地放置在各自的目录中。

两个单独的文件夹,我想知道是否必须将 android 定向到单独文件夹中的图标?

您不必指示 Android 执行任何操作。Android 会自动从“drawable-**dpi”中智能地选择正确的图像尺寸。

我的意思是,我是否必须首先弄清楚设备的 dpi 类型并设置适当的图标,或者我可以只声明一个可绘制资源,然后 android 会为我找到它吗?

您无法计算出所有设备的 dpi,因为您的应用程序将在具有不同密度的多个设备上运行。您只需将不同大小的图标放入各自的可绘制目录中即可。

您永远不应该将单个图像或图标放在“drawable”目录中,因为它会大大减慢您的应用程序的速度,因为 Android 需要在运行时动态调整图像的大小。

如果我可以设置一个图标名称和可绘制文件,并且 Android 系统将知道在不同的屏幕上使用什么,那么你能向我解释一下这是如何完成的吗?

参考上一个问题,已经回答了。

那么如何在drawable文件夹中设置一个图标图像,并且android知道要为不同设备的drawable-hdpi访问什么内容呢?

如前所述,Android 显然知道应用程序当前正在运行哪个设备,从而知道其屏幕密度。现在,如果您已将它们正确地放入各自的可绘制文件夹中,那么对于 Android 来说,只需根据当前屏幕密度选择正确的图像就非常容易了。

更新

只是为了回答你的新问题。

您从一个“可绘制”文件夹开始。但是您需要自己创建其他目录,并且它们需要有正确的名称,例如drawable-mdpi、drawable-hdpi、drawable-xhdpi等。

您不能使用任何其他名称,例如drawable-K 或drawable-l,甚至名称中不能有拼写错误。Android 只是扫描看看您的应用程序中是否存在具有这些名称的文件夹,如果存在,那么它会选择正确的文件夹。

假设您使用的是 Nexus 5,它是xxhdpi设备,

i) 现在 Android 将在您的应用程序中的 drawable-xhdpi 目录中查找特定图像。

ii) 如果存在,那么它只会拾取它。如果没有,它将寻找最近的图像,例如drawable-xxhdpi或drawable-hdpi,并稍微调整图像大小以适应。

iii) 如果什么都不存在,那么它将从原始的“drawable”文件夹中选取图像。

希望它能消除您所有的疑虑。