这是我的第一个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有一个替代布局,使用其中一个图标的波纹版本。