X

Picasso

Introducción

Las imágenes añaden mucha información y elegancia a las aplicaciones de Android. Picasso permite cargar imágenes sin problemas en tu aplicación, y lo que es mejor, ¡la gran mayoría de las veces con una sola línea de código!

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

Una gran cantidad de errores habituales en la carga de imágenes son gestionados automáticamente por Picasso:

  • Administrar el reciclado de los ImageView y cancelar la descarga en un adapter.
  • Transformación compleja de imágenes con un uso de memoria mínimo.
  • Caching automático de memoria y disco.

 

Características

Descargas del Adapter

El reuso del adapter es automáticamente detectado y se cancela una descarga previa de la imagen.

@Override public void getView(int position, View convertView, ViewGroup parent) {
  SquaredImageView view = (SquaredImageView) convertView;
  if (view == null) {
    view = new SquaredImageView(context);
  }
  String url = getItem(position);

  Picasso.with(context).load(url).into(view);
}

Transformaciones de imágenes

Transforma las imágenes para que encajen mejor en tus layouts y reducir el tamaño en memoria.

Picasso.with(context)
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)

También puedes especificar transformaciones personalizadas para efectos más avanzados.

public class CropSquareTransformation implements Transformation {
  @Override public Bitmap transform(Bitmap source) {
    int size = Math.min(source.getWidth(), source.getHeight());
    int x = (source.getWidth() - size) / 2;
    int y = (source.getHeight() - size) / 2;
    Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
    if (result != source) {
      source.recycle();
    }
    return result;
  }

  @Override public String key() { return "square()"; }
}

Para ello utiliza la clase anterior como instancia del método transform.

Picasso.with(context)
  .load(url)
  .transform(new CropSquareTransformation())
  .resize(50, 50)
  .centerCrop()
  .into(imageView)

Place Holders (Imágenes pre-descarga y post-error)

Picasso soporta poder mostrar ambos tipos de imágenes, las que se muestran antes de que se descargue la imagen real, o la que se mostraría en caso de no poder descargarse.

Picasso.with(context)
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);

Una petición se realizará tres veces antes de mostrar la imagen post-error.

Carga de recursos

Recursos, activos, archivos, content providers (proveedores de contenido) son soportados por Picasso como fuentes de imágenes.

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);

Indicadores de depuración

Para facilitar el desarrollo, puedes habilitar una opción que muestra una pequeña cinta en las esquinas que indica el estado de la imagen. Utiliza setIndicatorsEnabled(true) en cualquier instancia de Picasso.

Picasso.with(context)
    .load(url)
    .setIndicatorsEnabled(true)
    .into(imageView);

Descargar

El código fuente de Picasso, y sus ejemplos, se encuentran disponibles en la web GitHub.

MAVEN

<dependency>
  <groupId>com.squareup.picasso</groupId>
  <artifactId>picasso</artifactId>
  <version>2.5.2</version>
</dependency>

GRADLE

compile 'com.squareup.picasso:picasso:2.5.2'

Contribuir

Si te gustaría contribuir con tu código, puedes hacerlo a través de GitHub haciendo un fork del repositorio y enviándoles una solicitud.

Cuando suministres código, por favor, utiliza todo el esfuerzo posible en seguir las convenciones y estilos existentes para mantener el código tan legible como sea posible. También asegúrate de que el código compila ejecutando mvn clean verify.

Antes de que tu código lo acepten en el proyecto, debes también firmar la Individual Contributor License Agreement (CLA).

Licencia

Copyright 2013 Square, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Puedes ver más información sobre Picasso en la página oficial de Square en inglés pulsando aquí.

Los comentarios de Disqus están cargando....