Android: ¿Cuál es la diferencia entre la aplicación: srcCompat = “” y android: src = “”?

Cada vez que creo un ícono ImageView con el recurso Vector de Android Studio recibo un error en la app:srcCompat="@drawable/ic_play" línea app:srcCompat="@drawable/ic_play"

Y cuando cambio la app:srcCompat="" con android:src="" el error se ha ido pero el ícono se ve pixelado.

¿Cuál es la principal diferencia entre

 app:srcCompat="@drawable/ic_play" 

y

 android:src="@drawable/ic_play" 

aplicación: srcCompat

es el método más infalible de integración de vectores arrastrables en su aplicación. Los elementos imprimibles de vectores le permiten reemplazar múltiples activos PNG con un solo gráfico vectorial, definido en XML. Si bien anteriormente se limitaba a Lollipop y dispositivos superiores

Nota

A partir de Android Support Library 23.3.0 , los vectores arrastrables de soporte solo se pueden cargar a través de la app:srcCompat .

necesita agregar vectorDrawables.useSupportLibrary = true a su archivo build.gradle

  // Gradle Plugin 2.0+ android { defaultConfig { vectorDrawables.useSupportLibrary = true } } 

android: src

Establece un dibujable como el contenido de este ImageView. Se mostrará en su tamaño original. Sin escalamiento automático

Utilizar:

 app:srcCompat="@drawable/backImage" 

El atributo srcCompat se define realmente dentro de la biblioteca de AppCompat. Importante: deberá agregar el espacio de nombre apropiado para esto.

 xmlns:app="http://schemas.android.com/apk/res-auto" 

Nota

Lo que está obteniendo parece ser solo un error de pelusa que puede ignorarse. Intenté y obtuve el mismo error, pero está funcionando correctamente.

Puede usar tools:ignore="MissingPrefix" para evitar ver este error temporalmente.

Espero que esto ayude.

Los vectores y los vectores animados solo se admiten en versiones recientes del marco. srcCompat se puede usar con la biblioteca de compatibilidad para que funcionen, pero esto solo funciona con ciertas vistas en la biblioteca de soporte. Observe que la aplicación: se usa en lugar de android :. Esto significa que no es parte del marco, sino un parámetro definido por su aplicación.

Al usar AppCompat con ImageView (o subclases como ImageButton y FloatingActionButton ), podrá usar la nueva app:srcCompat atributo app:srcCompat para hacer referencia a vectores dibujables en versiones anteriores de la plataforma (así como a cualquier otro dibujo disponible para android:src )

android.support.v7.appcompat.R.attr.srcCompat :

srcCompat

Establece un dibujable como el contenido de este ImageView. Permite el uso de vectores dibujables cuando se ejecuta en versiones anteriores de la plataforma.

Puede ser una referencia a otro recurso, en la forma "@[+][package:]type/name" o un atributo de tema en la forma "?[package:]type/name" .


No olvides insertar xmlns:app="http://schemas.android.com/apk/res-auto" cuando uses la app:srcCompat .

 app:srcCompat="some_resource" 

es referir que es AppCompatActivity src que viene en la biblioteca de soporte mientras

 android:src="some_resource" 

se refiere a la actividad simple.

al utilizar AppCompat con ImageView (o subclases como ImageButton y FloatingActionButton), podrá utilizar la nueva aplicación: atributo srcCompat para hacer referencia a los vectores dibujables (así como a cualquier otro dibujante disponible para android: src): Y si usted ‘ Al cambiar los drawables en tiempo de ejecución, podrás usar el mismo método setImageResource () que antes, sin cambios allí. Uso de AppCompat y la aplicación: srcCompat es el método más infalible para integrar vectores arrastrables en su aplicación. Encontrará referencia directa a los vectores arrastrables fuera de la aplicación: srcCompat fallará antes de Lollipop.

Si está usando android:src="@drawable/some_vector" sin vectorDrawables.useSupportLibrary = true en el archivo build.gradle y su aplicación tiene imágenes vectoriales (vector drawable), entonces al comstackr un archivo apk el complemento gradle de Android genera una gran cantidad de *.png archivos *.png para diferentes pantallas (hdpi, xhdpi …) de cada vector dibujable. El resultado: mayor tamaño de apk .

Al usar la app:srcCompat="@drawable/some_vector" con vectorDrawables.useSupportLibrary = true android usa archivos vectoriales dibujables sin generar archivos *.png .

Puede verificar esto con la herramienta del analizador apk de Android Studio. Simplemente vectorDrawables.useSupportLibrary = true apk con y sin vectorDrawables.useSupportLibrary = true .

Creo que esta es la principal diferencia.

Android 5.0 (nivel de API 21) y superior proporciona compatibilidad con vectores dibujables para poder admitir archivos vectoriales arrastrables en versiones anteriores de la aplicación: se agregó srcCompat