【问题标题】:customizing a drawable for a range of APIs Android为一系列 API 自定义可绘制对象 Android
【发布时间】:2017-04-28 08:15:03
【问题描述】:

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

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

【问题讨论】:

    标签: android customization drawable


    【解决方案1】:

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

    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 对其进行测试,但这应该从默认文件中获取值,因为没有适用的限定符。)

    【讨论】:

    • 感谢答案,根据 user2695433(见上文)/drawable 文件夹将适用于所有其他文件夹,根据您的答案 drawable-v2 2 将适用于 22 或更大。所以有什么问题。在这种情况下,23 台设备落在哪里?进入 /drawable-v22 或 /drawable?
    • 根据documentation,每个版本限定符都为其版本和更高版本服务(来自该页面:v4 for API level 4 (devices with Android 1.6 or higher)),因此您应该只定义“拐点”类别的文件夹。还没有机会测试它,但会尝试一下。
    • 谢谢,这正是我在整个问题中最大的担忧,因为理论上它可以双向工作......
    • 现在我无法测试它,只有一台笔记本电脑,它只打开android studio就快死了,不想想象如果我也打开一个模拟器会发生什么。到家后我要做的第一件事就是测试这个。
    • thx,它会类比地适用于 styles.xml 还是有不同的逻辑?
    【解决方案2】:

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

    【讨论】:

    • 谢谢回答,请看我对下面下一篇文章的回答
    • @hhg。感谢您指出您的关注。具体命名的文件夹将根据 api 版本进行匹配,如果不匹配,则回退将是可绘制(通用)的。虽然尚未针对 v23 进行测试,但 v24 应该属于通用(可绘制)。
    • thx,它会类比地适用于 styles.xml 还是有不同的逻辑?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多