Tengo un RelativeLayout una imagen de mapa de bits cargado con el ejemplo Touch V2 de Pragmático Estante con - http://media.pragprog.com/titles/eband3/code/Touchv2/src/org/example/touch/Touch.javaview.getDrawingCache() sólo funciona una vez
He añadido un botón independiente con OnClickListener que al hacer clic se cargará una imagen de la galería. En la actividad como resultado la imagen se carga como un mapa de bits en el RelativeLayout:
public void getPictureFromFile(Uri targetUri){
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = scale(getContentResolver()
.openInputStream(targetUri));
workinprogress = BitmapFactory.decodeStream(
getContentResolver().openInputStream(targetUri),
null, options);
view.setImageBitmap(workinprogress);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Uno el botón siguiente clic, agarro la imagen de la RelativeLayout usando:
thepicture.buildDrawingCache(true);
Bitmap bm = Bitmap.createBitmap(thepicture.getDrawingCache());
El proceso funciona fenomenal - para la primera imagen. Cuando vuelvo a cargar otra imagen, el mapa de bits pasado sigue siendo el mismo que el original. He intentado thepicture.invalidate() y thepicture.resetDrawableState() antes de getDrawingCache() pero ninguno parece actualizar la imagen a la imagen recién cargada, aunque el diseño del marco muestra la imagen correcta.
¿Hay algo que no entiendo acerca de refrescar drawingCache que necesito implementar para la segunda imagen que cargué?
+1 esto me salvó de perder horas de trabajo. Nice one dmytro –
Como método alternativo para habilitar la memoria caché de dibujo, también puede llamar a 'imageView.buildDrawingCache()', luego obtener la memoria caché de dibujo, luego llamar a 'imageView.destroyDrawingCache()'. Ver http://developer.android.com/reference/android/view/View.html#buildDrawingCache() – lilbyrdie
hizo el trabajo, gracias. –