Android Studio 1.4:使用"File/New/Vector Asset"选项时忽略drawable-v21



这是我的第一个SO问题,所以请不要生吃我…我的问题是:

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

当我想给其中一个图标添加涟漪效应时,问题就开始了。我写了....无波纹版本到我的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>21的图标中添加波纹。所以我给文件夹res/drawable-v21添加了这个drawable:

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的资源,而是使用基于res/drawable中的文件自动生成的app/build/generated/res/pngs/debug/drawable-xxhdpi-v21的绘图。所以没有涟漪。

当我试图从res/drawable/中删除无波纹文件时,波纹在API 21中返回,但当然应用程序在API <21中崩溃

然后我尝试将波纹版本的图标放到res/drawable文件夹中,希望gradle会自动生成png。不- <ripple>标签阻止gradle生成png和应用程序崩溃<</p>有谁碰到过这种问题吗?知道如何在图标上添加波纹吗?

祝你一天愉快!

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

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

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

最新更新