【问题标题】:How to specify icons for different densities screen?如何为不同密度的屏幕指定图标?
【发布时间】:2016-06-02 05:12:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: android


    【解决方案1】:

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

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

    这是完整分类

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

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

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

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

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

    您永远不应将单个图像或图标放在“可绘制”目录中,因为它会大大降低您的应用程序的速度,因为 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”文件夹中选择图像。

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

    【讨论】:

    • 感谢您的详尽回答,但我仍有一些需要澄清的地方。如果 android 知道如何选择正确的,这是否意味着我必须将图像源指向可绘制文件夹,然后 android 会选择它?另外,有什么可以阻止我命名 drawable-randomdpi 之类的东西并指定限定符。那么android会知道该选什么吗?
    • 顺便说一句,你发给我的文章,我正在阅读,但我还是不太明白,所以我在这里问了这个问题。
    • 我之前也解释过。只是通过我的回答。您只需要创建不同尺寸的图像或图标,然后将它们放入可绘制文件夹 - drawable-hdpi、drawable-mdpi、drawable-xxhdpi 等。Android 会在正确的时间选择正确的。
    • 现在我明白了。但是,我觉得我的第二个问题没有得到很好的回答,因为我不知道 android 怎么知道在不同的文件夹中选择什么。在 android studio 中,我最初只是从一个可绘制的文件夹开始,没有 drawable-hdpi 或类似的东西。所以让我澄清我的第二个问题。如果我创建另一个文件夹,让我们说 drawable-z 或 drawabl-K android 仍然知道该选择什么吗?有什么说android应该将这些文件夹用于不同的密度?
    猜你喜欢
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多