6

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

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

等等

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

让我们想象几个设备:

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

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

4

2 回答 2

9

您可以在此页面中找到资源文件夹的优先级。基本上它用于支持不同的设备和配置。

Android 使用某种逻辑来确定设备的最佳匹配资源文件夹。本文档页面对此进行了说明。

关于您的设备查询:

  • 第一: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会从这个文件夹中获取资源。查看列出资源限定符的表格以获取有关该主题的更多信息。资源限定符在表中按资源限定符的优先顺序列出。

  • 第一种情况:普通 hdpi - 小于 480dp 宽度 - 所以 values-hdpi
  • 第二种情况:普通 mdpi - 小于 480dp 宽度 -- values-mdpi(values-mdpi 比 values-v17 获得了更多的权重)
  • 第三种情况:hdpi 设备宽度为 480dp (720/1.5 = 480) API 17 -- values-w480
于 2013-07-19T09:33:20.590 回答
1

这是 Android 文档所述:

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

来源

Android 如何找到最匹配的资源

于 2013-07-19T09:34:25.953 回答