Android Studio 1.4:使用"文件/新/矢量资产"时忽略了drawable-v21选项

时间:2015-10-19 21:11:00

标签: android android-studio android-gradle drawable

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

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

当我想为其中一个图标添加涟漪效果时,问题就开始了。我已将......无涟漪版本放入我的res/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&gt; 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的drawable。所以没有涟漪。

当我尝试从res/drawable/删除无涟漪文件时,涟漪会在API 21中回归,但当然应用程序在API中崩溃&lt; 21

然后我尝试将图标的波纹版本放到res/drawable文件夹中,希望gradle会自动生成png。不 - <ripple>标记可防止gradle生成png并且应用程序崩溃&lt; 21。

有人偶然发现了这种问题吗?知道如何在图标上添加纹波吗?

祝你有个美好的一天!

1 个答案:

答案 0 :(得分:1)

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

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

现在,在API&lt; 21下,该应用程序使用gradle生成的无涟漪png,并且在API&gt; = 21时,有一个替代布局,使用其中一个图标的涟漪版本。