a vista de la galería de Android "tartamudea" con el adaptador de carga de imágenes diferid
Me gustaría crear un adaptador de carga diferido para usar con unGallery
widget.
Es decirgetView()
devuelve unImageView
inmediatamente, y luego algún otro mecanismo llamará asincrónicamente a susetImageBitmap()
método. Hice esto creando un "perezoso"ImageView
que se extiendeImageView
.
public class GalleryImageView extends ImageView {
// ... other stuff here ...
public void setImage(final Looper looper, final int position) {
final Uri uri = looper.get(position);
final String path = looper.sharePath(position);
new Thread(new Runnable() {
@Override
public void run() {
GalleryBitmap gbmp = new GalleryBitmap(context, uri, path);
final Bitmap bmp = gbmp.getBitmap(); // all the work is here
handler.post(new Runnable() {
@Override
public void run() {
if (GalleryImageView.this.getTag().equals(uri)) {
setImageBitmap(bmp);
}
}
});
}
}).start();
}
}
Cuando me desplazo lentamente en laGallery
, la imagen central sigue apareciendo en el centro. Es difícil de explicar, exactamente, pero es realmente molesto. También probé el mismo enfoque para un adaptador giratorio y funciona perfectamente allí.
¿Algunas ideas