我想了解 Android 中的可绘制文件夹是如何工作的。我发现在我们项目中的资源文件夹中,有以下几个文件夹:
res/drawable-ldpi/
res/drawable-ldpi-v8/
res/drawable-ldpi-v11/
res/drawable-mdpi/
res/drawable-mdpi-v8/
res/drawable-mdpi-v11/
res/drawable-hdpi/
res/drawable-hdpi-v8/
res/drawable-hdpi-v11/
res/drawable-xhdpi/
res/drawable-xhdpi-v8/
res/drawable-xhdpi-v11/
res/drawable-xxhdpi/
res/drawable-xxhdpi-v8/
res/drawable-xxhdpi-v11/
有人可以告诉我这些文件夹的回退机制是如何工作的吗?还有 v8 和 v11 是什么意思?
最佳答案
来自 Android doc :
The API level supported by the device. For example, v1 for API level 1 (devices with Android 1.0 or higher) and v4 for API level 4 (devices with Android 1.6 or higher). See the Android API levels document for more information about these values.
-v8
和 -v11
是 API version但是当 android 确定使用资源的最佳匹配时,它将使用它们作为“级别”(而不是严格的 api 版本号),例如使用您的项目文件夹结构:
如果设备运行 Froyo(Android 2.2,API 8)和 mdpi 屏幕,那么将从
res/drawable-mdpi-v8 获取资源/
文件夹如果设备运行 Gingerbread(Android 2.3,API 10)和 mdpi 屏幕,那么资源也将从
res/drawable-mdpi- v8/
文件夹(因为8<10<11)如果设备运行带有 mdpi 屏幕的 Ice Cream Sandwich(Android 4.0,API 15),那么资源也将从
res/drawable- mdpi-v11/
文件夹(因为11<15)
--
为什么默认的 res 文件夹是 v-8
、v-11
、v-15
... 而不是 v- 12
、v-13
或 v-16
... ?
因为它是 Android 的主要版本,对 UI 机制进行了更改(例如,Api 11 是第一个针对平板电脑优化的 Android)。
关于Android 可绘制文件夹回退规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30490780/