Whenever i create an ImageView with icon added using Android Studio's Vector asset i'm getting error at the line app:srcCompat="@drawable/ic_play"
And when i change the app:srcCompat=""
with android:src=""
the error is gone but the icon looks pixelated.
What is the main difference between
app:srcCompat="@drawable/ic_play"
and
android:src="@drawable/ic_play"
If you are using
android:src="@drawable/some_vector"
withoutvectorDrawables.useSupportLibrary = true
in build.gradle file and you app have vector images (vector drawable), then while buildingapk
file android gradle plugin generates a lot of*.png
files for different screens (hdpi, xhdpi...) from each of your vector drawable. The result - bigger size ofapk
.When using
app:srcCompat="@drawable/some_vector"
withvectorDrawables.useSupportLibrary = true
android uses vector drawable files without generating*.png
files.You can check this with Android Studio apk analyzer tool. Just build apk with and without
vectorDrawables.useSupportLibrary = true
.I think this is the main difference.
Android 5.0 (API level 21) and higher provides vector drawable support so in order to support vector drawables in older versions app:srcCompat was added
Vectors and animated vectors were only supported in recent versions of the framework. srcCompat can be used with the compatibility library to make them work, but this only works with the certain views in the support library. Notice that app: is used instead of android:. This means its not part of the framework, but a parameter defined by your app.
app:srcCompat
Note
As of Android Support Library 23.3.0, support vector drawables can only be loaded via
app:srcCompat
.you need to add vectorDrawables.useSupportLibrary = true to your
build.gradle
fileandroid:src
Use:
The srcCompat attribute is actually defined within AppCompat library. Important: you will need to add the appropriate namespace for this.
Note
What you are getting seems to be just a lint error that can be ignored. I have tried and gotten the same error, but it is working correctly.
You can use
tools:ignore="MissingPrefix"
to avoid seeing this error, temporarily.I hope this helps.
is refer that it is AppCompatActivity src which comes in support library while
refers to simple activity.