ImageView
Explicación del concepto de ImageView.
Last updated
Explicación del concepto de ImageView.
Last updated
Hereda de View
.
Muestra un recurso de imagen, por ejemplo, un Bitmap o un Drawable.
ImageView es tambien utilizado para aplicar colores a una imagen o escalarlas, haciendo uso de sus métodos.
Si lo marcamos como true
, limitará el espacio ocupado por el drawable a aquel que puede ocupar manteniendo su ratio de aspecto.
Si lo marcamos como true
, la imagen se cortará para cumplir los Paddings marcados en la misma.
Marca la altura máxima permitida para la imagen.
Marca la anchura máxima permitida para la imagen.
Define la forma en que la imagen debe ser escalada para cumplir con las restricciones dadas.
Puede ser una de las siguientes:
center -> La imagen se centra en la View sin realizar ningún escalado.
centerCrop -> Escala la imagen de manera uniforme (manteniendo el ratio de aspecto). Sus medidas serán iguales o superiores a las de origen. La imagen se centra en la View.
centerInside -> Escala la imagen de manera uniforme (manteniendo el ratio de aspecto). Sus medidas serán iguales o menores a las de origen. La imagen se centra en la View.
fitCenter -> Escalado utilizando android.graphics.Matrix.ScaleToFit#CENTER
.
fitEnd -> Escalado utilizando android.graphics.Matrix.ScaleToFit#END
.
fitStart -> Escalado utilizando android.graphics.Matrix.ScaleToFit#START
.
fitXY -> Escalado utilizando android.graphics.Matrix.ScaleToFit#FILL
.
matrix -> Escalado utilizando una matriz de imagen.
Define el origen del recurso de imagen que se va a utilzar.
El color con el que se va a tintar la imagen.
En el caso de que quiera utilizar una imagen que se encuentre en Internet, por ejemplo, como hacen las redes sociales para cargar nuestras imagenes de la base de datos, debemos realizar varios pasos:
En primer lugar se debe ir al AndroidManifest.xml
y solicitar permisos para el uso de Internet. Esto se hace con la siguiente línea de código:
Para ver imagenes desde la Red en nuestra aplicación debemos utilizar una biblioteca externa.
Para esto existen dos referencias claras, una de ellas es Picasso
(que es la que vamosa utilizar) y la otra es Glide
.
Para utilizarla debemos añadir a nuestro script de graddle build.graddle(:app)
la siguiente linea:
Ahora que ya hemos dejado el terreno preparado necesitamos implementar el código.
Primero necesitamos una ImageView con android:id
:
Y después debemos utilizar el código en Kotlin para llamar a Picasso y mostrar nuestra imagen:
Cuando se utiliza una imagen en nuestra aplicación surge el problema de que en función de la pantalla en la que veamos esa Imagen, la calidad será mejor o peor.
Para solucionarlo, Android nos permite crear imágenes con densidades de pixeles diferentes y el propio dispositivo decidirá cual es la más adecuada para él.
Sin embargo esto es muy trabajoso y además genera un uso de almacenamiento muy superior.
En este apartado veremos como crear de manera fácil estas diferentes imágenes y como reducir el espacio que ocupan:
Android Drawable Importer
es un plugin para Android Studio que facilita la creación de Imágenes con diferente densidad de pixeles a partir de una imagen base.
Para instalarlo, solo debe descargarse la última release del enlace superior y esto le descargará un archivo con extensión .zip
Con un nombre parecido al siguiente ADI-hack-0.81.zip
(variará en función de la versión).
Una vez hecho esto, en Android Studio debe buscar en la Barra de Herramientas, en File / Settings / Plugins
y una vez ahí buscar lo siguiente:
En la ventana emergente busca el archivo que se ha descargado (no es necesario descomprimir) y listo, tendrá que reiniciar Android Studio para tener todo en orden.
Una vez tenga el plugin instalado y habilitado, cuando vaya a añadir un nuevo drawable
, se encontrará las siguientes nuevas opciones:
Si no le aparecen las nuevas opciones, compruebe que tiene el nuevo Plugin habilitado.
Vamos a utilizar la Batch Drawable Import
para importar imagenes no vectoriales:
Para empezar, añadimos la imagen que queremos importar:
Después seleccionamos el contexto, lo normal será que se añadan al superior:
Por último elegimos las densidades de píxeles que queremos que se creen y el nombre de salida de las imáegnes:
Esto creará una carpeta dentro de drawable con el nombre de salida que contendrá las imágenes con diferentes densidades.
Como hemos visto, al crear estas imágenes, se generan varios MegaBytes de datos. Para evitar aumentar de manera considerable el peso de nuestra App al realizar esta técnica, podemos convertir nuestras imágenes a formato webp.
Para empezar, seleccionamos la imagen que queremos convertir y con click derecho, buscamos la opción:
Posteriormente nos debemos asegurar de que la preview está marcada:
Por último, en la preview vemos cómo va a quedar nuestra imagen:
En el centro vemos los colores que se van a eliminar y de donde.
Debajo de las imágenes vemos lo que ocupaba y lo que ocupará.
En el extremo derecho marca el porcentaje de calidad (por defecto se pone en 75%).
Una vez hecho esto con todas las imagenes creadas por el Plugin, habremos reducido en gran medida el peso de nuestra App.