android:src与app:srcCompat之间是否还有区别?

时间:2017-03-25 11:11:15

标签: android

我在stackoverflow以及其他资源上阅读了app:srcCompat,该属性的主要目的是支持vector-drawable。但是当android:src对矢量绘制工作正常时,我感到很困惑。

<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="#FF000000"
        android:pathData="M10.18,9"/>
    <path
        android:fillColor="#FF000000"
        android:pathData="M21,16v-2l-8,-5V3.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S10,2.67 10,3.5V9l-8,5v2l8,-2.5V19l-2,1.5V22l3.5,-1 3.5,1v-1.5L13,19v-5.5l8,2.5z"/>
</vector>

我将上述代码保存在可绘制目录的abc.xml文件中,然后将其与android:src一起使用

<ImageView
        android:id="@+id/imageView"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:src="@drawable/abc" />

工作正常。然后app:srcCompat有用或者它们之间有什么区别?或者我理解错了?

1 个答案:

答案 0 :(得分:3)

是的,有区别。有一篇关于它的文章here。 基本上app:srcCompat将在加载向量drawable时使用旧的API。您会发现直接引用app:srcCompat之外的矢量绘图将在Lollipop之前失败,您可能在Lollipop或更高版本上运行android:src