为一系列 API 自定义可绘制对象 Android

customizing a drawable for a range of APIs Android

我想自定义一个可绘制对象,例如 /drawable/image.png

仅适用于 API 19 到 21。对于以后的 API(包括 22 之后,我希望 drawable 有所不同)。我需要创建目录吗 可绘制-v19, 可绘制-v20, 可绘制-v21, drawable-v22(对于其他人?) ?我有点不清楚它是如何工作的...

您应该只需要为设置不同资源的版本创建目录。所以你的资源目录看起来像:

res/
    drawable/        --> SDK version below 19
        image.png
    drawable-v19/    --> SDK version between 19 and 21 (including both)
        image.png
    drawable-v22/    --> SDK version 22 and greater
        image.png

编辑: 似乎是这样工作的。我已经为 sdk 19 和 22 设置了一个带有 strings.xml 的小项目,启动了两个模拟器,分别是 sdk 21 和 25。SDK 21 显示了 v19 字符串中的字符串,而 SDK 25 显示了 v22 中的字符串字符串。这是一张包含结果的图片:

希望对您有所帮助。 (无法使用低于 19 的 sdk 对其进行测试,但是应该从默认文件中获取值,因为没有限定符适用。)

您可以为每个版本的每个自定义图像创建可绘制文件夹,如 drawable-v19、drawable-v20、drawable-v21、drawable-v22。如果应用 运行 在这些设备之一上,它会从这些匹配版本的自定义文件夹中选择,否则会回退到通用可绘制文件夹。