Picasso y PhotoView Library cargan imagen en ImageView extraño
Estoy cargando imágenes en un ImageView con la biblioteca de Picasso y luego usando la Biblioteca de PhotoView para agregar zoom y panorámica, etc. al ImageView.
Pero cuando picasso ha cargado la imagen por primera vez, muestra las imágenes como esta:
- ¿Cómo implementar Pinch Zoom en la biblioteca de Picasso?
- La transformación de la imagen no se aplica después del cambio de orientación con Picasso
- Imágenes que no se cargan con Picasso sin error
- Redimensionar la imagen a todo el ancho y la altura fija con Picasso
- Invalidar caché en Picasso
Pero tan pronto toco la imagen que coloca correctamente
Pero si cierro mi aplicación de repente no muestra la imagen más y no.
Mi MainActivity: http://pastebin.com/5H4zAgH
Las bibliotecas que utilizo:
- Http://square.github.io/picasso/
- Https://github.com/chrisbanes/PhotoView
- Cómo agregar un token de autenticación en el encabezado de la biblioteca Picasso
- Actualizar / cambiar el mapa de bits en caché utilizando Picasso y OkHttp
- ¿Necesito proporcionar imágenes con diferentes tamaños si lo recupero usando Picasso o Glide o Volley?
- ¿Picasso aplica opciones de redimensionamiento durante fetch ()?
- Cómo cargar la imagen del GIF en el marcador de posición de Glide / Picasso / Ion etc
- Cómo cambiar el tamaño del marcador de imagen de ImageView con picasso
- Picasso imagen cargando
- Uso de Picasso para cargar una imagen en un mapa de bits
Tuve el mismo problema con la imagen equivocada al usar Picasso y Photoview juntos.
Para solucionarlo, lo que hago es usar una devolución de llamada al cargar la imagen con Picasso usando into(view, callback)
lugar de sólo into(view)
. Una vez que la imagen se carga correctamente instantiar el objeto PhotoViewAttacher o llamar al método update()
.
Aquí tienes un ejemplo de código:
Callback imageLoadedCallback = new Callback() { @Override public void onSuccess() { if(mAttacher!=null){ mAttacher.update(); }else{ mAttacher = new PhotoViewAttacher(mImageView); } } @Override public void onError() { // TODO Auto-generated method stub } }; Picasso.with(mContext) .load(mImageUrl) .into(mImageView,imageLoadedCallback);
Espero que esto ayude. Saludos.
También tuve el mismo problema. Lo resolví usando PhotoView
vez de ImageView
y quité el PhotoViewAttacher
de mi código.
En el archivo de diseño (si utiliza el diseño):
<uk.co.senab.photoview.PhotoView android:id="@+id/your_photo_view" android:layout_width="match_parent" android:layout_height="match_parent" ... />
Y en su código:
PhotoView photoView = (PhotoView) findViewById(R.id.your_photo_view); Picasso.with(context) .load(file) ... .into(photoView);
Ahora todo debe ser correcto (al menos para mí lo es!);