我想在我做的应用程序中开始使用矢量图标,但不知道如何处理兼容性
我对任何第三方compat库都不感兴趣,并且乐于等待googles版本(这里提到VectorDrawable - is it available somehow for pre-Lollipop versions of Android?)。
所以基本上现在我很高兴继续获得每个分辨率的图像以及>的附加信息。棒糖。如果设备高于21,它将使用向量,否则它将回退到标准png。
我可以将矢量放在drawable-v21文件夹中,但drawable- [dpi]文件夹优先于版本,这意味着不使用矢量。
我希望使用矢量,这样当compat可用时我可以简单地删除所有png并知道矢量就可以,因为我已经能够在运行Lollipop的设备上测试它们。
答案 0 :(得分:2)
现在谷歌发布Android Support Library 23.2支持向量Drawables和动画矢量Drawables!
displayvalue: "REVIEWER" label: "REVIEWER"
注意:强>
- 将图像一直传回API 7(Android 2.1 Eclair)。
- 动画矢量稍微有限,只能追溯到最后 作为API 11
答案 1 :(得分:2)
为了向后兼容Vector Drawable,这里是我用于API Level 20之前设备的以下配置。
<强>的build.gradle 强>
vectorDrawables.useSupportLibrary = true
dependencies{classpath 'com.android.tools.build:gradle:2.1.2'}
<强>活动强>
onCreate&gt; AppCompatDelegate.setCompatVectorFromResourcesEnabled(真);
XML ImageView
app:srcCompat="@drawable/vector"
程序化ImageView
imageView.setBackgroundResource(R.vector);
<强> vector.xml 强>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="30dp"
android:height="20dp"
android:viewportHeight="20.0"
android:viewportWidth="30.0">
<path
android:fillColor="#4C5F70"
android:pathData="DATA_HERE"
android:strokeColor="#00000000"
android:strokeWidth="1"/>
</vector>
答案 2 :(得分:1)
从Android 5.0(API级别21),您可以在应用中使用矢量drawable。您可以使用名为Vector Asset Studio的新Android Studio工具。它自动处理旧版本的PNG。请参阅以下链接以获取完整说明:
答案 3 :(得分:1)
使用Android支持库23.2, 现在,从API级别7开始支持VectorDrawables,从API级别11开始支持AnimatedVectorDrawables。
所以现在你可以使用
app:srcCompat
而不是
app:src
使用具有向后兼容性的VectorDrawable
。
答案 4 :(得分:0)
if you use SRC the use this:
you don't need to add that line in every activity, if you added it once in the Application class it will work as well.
public class App extends Application {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
REMEMBER: You still need to have enabled the use of the support library in gradle:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Inside xml use:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_add" />
When you want to use vector drawable as drawableTop, bottom, right ,left then used LayerDrawable otherwise it crash on device lower than 5.0
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/search"/>
</level-list>