usesupportlibrary - vector drawable android
Diferencia entre app: srcCompat y android: src en el diseƱo XML de Android (8)
Al usar
AppCompat
con
ImageView
(o subclases como
ImageButton
y
FloatingActionButton
), podrá usar la nueva
app:srcCompat
atributo
app:srcCompat
para hacer referencia a los
app:srcCompat
vectoriales (así como a cualquier otro dibujo disponible para
android:src
).
Y si está cambiando los elementos dibujables en tiempo de ejecución, podrá usar el mismo método
setImageResource()
que antes (sin cambios allí).
Uso de
AppCompat
y la
app:srcCompat
es el método más infalible para integrar dibujos vectoriales en su aplicación.
Encontrará que hace referencia directa a los
app:srcCompat
vectoriales fuera de la
app:srcCompat
fallará antes de
Lollipop
.
Cada vez que creo un ImageView con un icono agregado usando los activos vectoriales de Android Studio, recibo un error en la
app:srcCompat="@drawable/ic_play"
línea
app:srcCompat="@drawable/ic_play"
Cuando cambio la
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"
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
Cuando use
AppCompat
con
ImageView
(o subclases como
ImageButton
y
FloatingActionButton
),
podrá usar la nueva
app:srcCompat
atributo
app:srcCompat
para hacer referencia a
app:srcCompat
vectoriales en versiones anteriores de la plataforma (así como cualquier otro elemento 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 olvide insertar
xmlns:app="http://schemas.android.com/apk/res-auto"
cuando use la
app:srcCompat
.
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.
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 dibujable), entonces, al construir el archivo
apk,
el complemento de Android gradle genera mucho * .png para diferentes pantallas (hdpi, xhdpi ...) de cada uno de sus vectores dibujables (solo para API = <19).
El resultado: mayor tamaño de
apk
.
Al usar la
app:srcCompat="@drawable/some_vector"
con
vectorDrawables.useSupportLibrary = true
android usa archivos de
vectorDrawables.useSupportLibrary = true
vectoriales sin generar archivos
*.png
.
Puede verificar esto con la herramienta de análisis de Android Studio apk.
Simplemente construya apk con y sin
vectorDrawables.useSupportLibrary = true
.
Creo que esta es la principal diferencia.
Utilizar:
app:srcCompat="@drawable/backImage"
El atributo srcCompat se define realmente dentro de la biblioteca AppCompat. Importante: necesitará agregar el espacio de nombres 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. He intentado y obtuve el mismo error, pero funciona correctamente.
Puede usar las
tools:ignore="MissingPrefix"
para evitar ver este error, temporalmente.
Espero que esto ayude.
es el método más infalible para integrar dibujos vectoriales en su aplicación. Los dibujos vectoriales 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
dibujos de
vectores 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
}
}
Establece un elemento dibujable como el contenido de este ImageView. Se mostrará en su tamaño original. Sin escala automática.
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 actividad simple.