为什么Android 4.2会尝试从drawable-xhdpi-v4获取资源

时间:2015-10-07 18:54:18

标签: android

最近,我收到了大量的崩溃报告

android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-v4/flag_au.png from drawable resource ID #0x7f0200bc
    at android.content.res.Resources.loadDrawable(Resources.java:1970)
    at android.content.res.Resources.getDrawable(Resources.java:660)

我感到奇怪,因为崩溃报告来自 Android 4.2 ,设备 @ Tab7QC-16

我确实有 xhdpi 中的资源。我希望Android 4.2应该从 xhdpi 中选择资源。

我不打算提供 drawable 文件夹。因为,我将把mdpi大小的图像放入其中。当目标设备将其扩展到xhdpi时,它看起来不会很好。

我认为我可以通过将文件夹xhdpi克隆到xhdpi-v4来“解决”崩溃。

但问题是,为什么Android 4会尝试从drawable-xhdpi-v4中获取资源?

1 个答案:

答案 0 :(得分:4)

正如我所看到的,文件夹资源以完全相反的方式工作。

例如,限定符drawable-v4指的是API级别4和更高,而不是更低。所以如果你有这些文件夹:

  • 绘制
  • 抽拉-V4
  • 抽拉-V15

drawable-v15文件夹代表API 15-23(截至目前),drawable-v4代表API 4-14,drawable代表API级别无法与之匹配以前的文件夹(因此API 1-3)。

在这种意义上,您应该重新格式化文件夹。

McCabe Cycolmatic Complexity官方文档中的参考页面。出于某种原因,此刻我只能用中文加载(我认为),但是看看谷歌缓存它似乎支持我的观点。