【问题标题】:Android: Values priorityAndroid:价值观优先
【发布时间】:2013-07-19 09:27:47
【问题描述】:

在我的应用程序中的res 文件夹中,有不同设备的值文件夹。例如:

值-mdpi
价值观-hdpi
价值观-v14
价值观-v17
价值观-w480
价值观-w720

等等

我想知道这些文件夹对于 Android 的优先级是什么?

让我们想象几个设备:

first : 480*800  hdpi v14  
second: 320*480  mdpi v17  
third : 720*1280 hdpi v17  

Android 会为每个人使用哪个文件夹?

【问题讨论】:

    标签: android device


    【解决方案1】:

    您可以找到资源文件夹here in this page的优先级。基本上它用于支持不同的设备和配置。

    Android 使用特定逻辑来确定设备的最佳匹配资源文件夹。这在this documentation page 中有解释。

    关于您的设备查询:

    • 首先:480 * 800 hdpi v14 -- values-hdpi
    • 二:320 * 480 mdpi v17 -- values-mdpi
    • 第三:720 * 1280 hdpi v17 -- values-w480

    在您提供的列表中,values-w480 (devices with lowest width of 480dp, only from API 13) 获得了最高的功劳。因此,无论哪个设备符合该标准,它都会从该文件夹中获取资源。

    values-vXX (devices with API >= XX) 的功绩最低。所以如果其他文件夹没有被占用,那么只有Android会从这个文件夹中获取资源。 Check the table 列出资源限定符以获取有关该主题的更多信息。资源限定符在表中按资源限定符的优先顺序列出。

    • 第一种情况:普通 hdpi - 小于 480dp 宽度 -- 所以 values-hdpi
    • 第二种情况:正常 mdpi - 小于 480dp 宽度 -- values-mdpi (values-mdpi 的权重高于 values-v17)
    • 第三种情况:hdpi 设备宽度为 480dp (720/1.5 = 480) API 17 -- 价值观-w480

    【讨论】:

    • 另外,当 U 使用最小宽度/高度限定符时,记住这一点非常重要,例如 sw600dp 并不意味着“最小宽度 600 像素”而是“最小宽度 600* 像素”。一开始我没明白 :) 可能对我这样的新手有用
    【解决方案2】:

    这是 Android 文档的说明:

    请注意,当 Android 系统选择要使用的资源时 运行时,它使用某些逻辑来确定“最佳匹配” 资源。也就是说,您使用的限定词不必完全匹配 在所有情况下为了系统的当前屏幕配置 使用它们。具体来说,在根据大小选择资源时 限定符,系统将使用为屏幕设计的资源 如果没有更好的资源,则小于当前屏幕 匹配(例如,大尺寸屏幕将使用普通尺寸屏幕 必要时提供资源)。但是,如果唯一可用的资源是 大于当前屏幕,系统将不会使用它们和您的 如果没有其他资源与设备匹配,应用程序将崩溃 配置(例如,如果所有布局资源都被标记为 xlarge 限定符,但设备是正常大小的屏幕)。为了 有关系统如何选择资源的更多信息,请阅读如何 Android 找到最匹配的资源。

    Source

    How Android Finds the Best-Matching Resource

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2022-11-21
      • 2013-05-20
      • 2015-12-25
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      相关资源
      最近更新 更多