安卓工作室 1.4 : drawable-v21 ignored when using "File/New/Vector Asset" option

标签 android android-studio android-gradle-plugin drawable

这是我的第一个 SO 问题所以请不要活着吃掉我......这是我的问题:

我通过 Android Studio 1.4 的新选项导入了几个图标 - New/Vector Asset .如您所知,它可以让您轻松导入和使用矢量绘图并创建 png 以与 API <21 兼容。它将 png 放在文件夹中 app/build/generated/res/pngs/debug/drawable-<density> (mdpi、ldpi、hdpi 等)。它还会生成 -v21所有文件夹的版本,并将矢量可绘制 .xml 放在那里。

当我想为其中一个图标添加波纹效果时,问题就开始了。我已经将 .... 无纹波版本放入我的 res/drawable 中文件夹。它看起来像这样:

drawable/ic_settings.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#FFFFFF"
    android:pathData="M12,15.5A3.5,3.5 ...blablabla notimportatnt"/>
</vector>

然后我想给 API >21 中的图标添加波纹。所以到文件夹 res/drawable-v21我添加了这个可绘制对象:

drawable-v21/ic_settings.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
     android:color="?android:colorControlHighlight">
<item>
    <vector
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
        <path
            android:fillColor="#FFFFFF"
            android:pathData="M12,15.5A3.5,3.5 0,0....blah blah blah"/>
    </vector>
</item>
</ripple>

现在,当我在 API 21 下运行应用程序时,而不是使用来自 drawable-v21 的资源它使用来自 app/build/generated/res/pngs/debug/drawable-xxhdpi-v21 的可绘制对象根据res/drawable中的文件自动生成.所以没有纹波。

当我试图从 res/drawable/ 中删除无纹波文件时,涟漪在 API 21 中恢复,但应用程序当然会在 APIs<21

中崩溃

然后我试着把ripple版的图标放到了res/drawable文件夹,希望 gradle 会自动生成 png。不 - <ripple>标签阻止 gradle 生成 png 和应用程序崩溃 <21。

有人遇到过这种问题吗?知道如何向图标添加波纹吗?

祝你有美好的一天!

最佳答案

好的,我找到了解决方案。

在文件夹 res/drawable 中,我只留下了可以并且应该自动转换为 png 的矢量 - 所以只有没有波纹的普通普通图标。然后在 drawable_v21 中,我放入了 drawable 的波纹版本并重命名为 - ic_settings_ripple.xml。我创建了一个新文件夹 layout-v21 并复制了我的布局,但我使用的不是 ic_settings.xml ic_settings_ripple.xml

所以现在在 API<21 下,应用程序使用 gradle 生成的无波纹 png,并且在 API>=21 有一个替代布局,它使用其中一个图标的波纹版本。

关于安卓工作室 1.4 : drawable-v21 ignored when using "File/New/Vector Asset" option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224000/

相关文章:

android - 使用同一项目创建不同的应用程序(Android Studio)

android - 适用于 Froyo 的 Google Play 服务

android - View 翻转器 : Receiver not registered

Android 如何从我的应用程序使用 SD 卡中的文件路径预览图像

机器人工作室 - "permission denied : connect"

声明多个域时的 Android applink 消歧对话框

android - 使用 Jackson Parser 时的默认构造函数问题

c# - Web Api项目获取上传文件的字节数组

java - 将现有数据库从 Assets 文件夹复制到设备内存

Android:无法解决 65k 问题