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

时间:2016-06-02 05:12:58

标签: android

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

我的意思是,我必须首先弄清楚设备是什么类型的dpi并设置适当的图标,或者我可以只声明一个可绘制的资源,android会为我解决这个问题吗?

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

1 个答案:

答案 0 :(得分:4)

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

如您所知,有各种不同屏幕尺寸的Android设备。这就是为什么,根据它们的密度将它们分成几个类别。必须阅读this,如果您还没有。

这是完整分类

enter image description here

所以的想法是将所有这些目录分开,而不仅仅是一个“drawable”文件夹。每当您想在应用程序中放置任何图像或图标时,您需要将它们的不同大小正确放入各自的目录中。

  

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

您无需指示Android执行任何操作。 Android会自动从“drawable - ** dpi”自动选择正确的图片大小

  

我的意思是我必须先弄清楚什么样的dpi   设备是和设置适当的图标或我可以只声明一个   drawable资源和android会为我解决这个问题吗?

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

您不应该在“drawable”目录中放置单个图像或图标,因为它可能会大大减慢您的应用,因为Android需要在运行时动态调整图片大小。

  

如果我可以设置一个图标名称和可绘制文件以及android   系统将知道如何使用不同的屏幕,那么你可以   向我解释这是怎么做到的?

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

  

那么如何在drawable文件夹和android中设置图标图像呢?   知道为不同设备的drawable-hdpi访问什么?

如前所述,Android显然知道该应用当前正在运行的设备,从而了解其屏幕密度。现在,如果您将它们正确放入各自的可绘制文件夹中,Android就可以根据当前的屏幕密度选择正确的图像。

<强>更新

回答你的新问题。

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

你不能有任何其他名称,如drawable-K或drawable-l,或者甚至没有名字中的拼写错误。 Android只扫描以确定您的应用中是否存在具有这些名称的文件夹,如果是,则会选择正确的。

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

i)现在,Android会在你的应用中为特定图像寻找drawable-xhdpi目录。

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

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

希望它清除你所有的疑虑。