为一系列 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。如果应用 运行 在这些设备之一上,它会从这些匹配版本的自定义文件夹中选择,否则会回退到通用可绘制文件夹。
我想自定义一个可绘制对象,例如 /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。如果应用 运行 在这些设备之一上,它会从这些匹配版本的自定义文件夹中选择,否则会回退到通用可绘制文件夹。