Cada vez que creo un ImageView con un icono agregado usando los activos vectoriales de Android Studio, recibo un error en la línea app:srcCompat="@drawable/ic_play"
Cuando cambio el app:srcCompat
con android:src
, el error desaparece pero el icono parece pixelado.
¿Cuál es la principal diferencia entre
app:srcCompat="@drawable/ic_play"
y
android:src="@drawable/ic_play"
fuente
build.gradle
, pero todavía no funciona, ¿alguna idea?Si está utilizando
android:src="@drawable/some_vector"
sin elvectorDrawables.useSupportLibrary = true
archivo build.gradle y su aplicación tiene imágenes vectoriales (dibujables en vector), entonces, al compilar el archivo apk, el complemento de gradle de Android genera muchos archivos * .png para diferentes pantallas (hdpi, xhdpi ...) cada uno de sus vectores dibujables (solo para API = <19). El resultado: mayor tamaño de apk .Cuando se usa
app:srcCompat="@drawable/some_vector"
convectorDrawables.useSupportLibrary = true
Android, se usan archivos dibujables vectoriales sin generar*.png
archivos.Puede verificar esto con la herramienta de análisis de Android Studio apk. Solo construye apk con y sin
vectorDrawables.useSupportLibrary = true
.Creo que esta es la principal diferencia.
fuente
Utilizar:
El atributo srcCompat se define realmente dentro de la biblioteca AppCompat. Importante: necesitará agregar el espacio de nombres apropiado para esto.
Nota
Lo que está recibiendo parece ser solo un error de pelusa que puede ignorarse. He intentado y obtuve el mismo error, pero funciona correctamente.
Puede usar
tools:ignore="MissingPrefix"
para evitar ver este error, temporalmente.Espero que esto ayude.
fuente
Al usar
AppCompat
conImageView
(o subclases comoImageButton
yFloatingActionButton
), podrá usar el nuevoapp:srcCompat
atributo para hacer referencia a dibujos vectoriales en versiones anteriores de la plataforma (así como cualquier otro elemento disponible para dibujarandroid:src
) .android.support.v7.appcompat.R.attr.srcCompat :
No olvides agregarlo
xmlns:app="http://schemas.android.com/apk/res-auto"
cuando lo usesapp:srcCompat
.fuente
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. Tenga en cuenta que la aplicación: se utiliza en lugar de android :. Esto significa que no es parte del marco, sino un parámetro definido por su aplicación.
fuente
es referir que es AppCompatActivity src que viene en la biblioteca de soporte mientras
se refiere a actividad simple.
fuente
Cuando se usa
AppCompat
conImageView
(o subclases comoImageButton
yFloatingActionButton
), podrá usar el nuevoapp:srcCompat
atributo para hacer referencia a dibujos vectoriales (así como a cualquier otro elemento disponible para dibujarandroid:src
). Y si está cambiando los elementos dibujables en tiempo de ejecución, podrá utilizar el mismosetImageResource()
método que antes (no hay cambios allí).Utilizando
AppCompat
yapp:srcCompat
es el método más infalible para integrar dibujos vectoriales en su aplicación. Encontrará que hacer referencia directa a los dibujos vectoriales fuera deapp:srcCompat
fallará antes de Lollipop .fuente
Android 5.0 (API nivel 21) y superior proporciona soporte de dibujo vectorial, por lo que para admitir dibujos vectoriales en la aplicación de versiones anteriores: se agregó srcCompat
fuente