这是我的第一个问题,所以请不要活着吃我......这是我的问题:
我通过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。
有人偶然发现了这种问题吗?知道如何在图标上添加纹波吗?
祝你有个美好的一天!
答案 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时,有一个替代布局,使用其中一个图标的涟漪版本。