View.getDrawingCache () sólo funciona una vez

Tengo un RelativeLayout con una imagen cargada del mapa de bits usando el ejemplo del tacto V2 de Pragmatic Bookshelf – http://media.pragprog.com/titles/eband3/code/Touchv2/src/org/example/touch/Touch.java

He añadido un botón independiente con onclicklistener que cuando se hace clic en cargar una imagen de la galería. En el resultado de la actividad, la imagen se carga como mapa de bits en 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 haga clic, agarro la imagen del 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 tampoco parecen actualizar la imagen a la imagen recién cargada, aunque el diseño de trama muestra la imagen correcta.

¿Hay algo que no entiendo acerca de refrescar drawingCache que necesito implementar para la segunda imagen que carga?

Para hacer que funcione más entonces una vez que tenga que usar view.setDrawingCacheEnabled(true) cada vez antes y view.setDrawingCacheEnabled(false) cada vez después de llamar a view.getDrawingCache() . Vea el ejemplo:

 imageView.setDrawingCacheEnabled(true); imageView.buildDrawingCache(true); File imageFile = new File(Environment.getExternalStorageDirectory(), "Pictures/image.jpg"); FileOutputStream fileOutputStream = new FileOutputStream(imageFile); imageView.getDrawingCache(true).compress(CompressFormat.JPEG, 100, fileOutputStream); fileOutputStream.close(); imageView.setDrawingCacheEnabled(false); 
  • Cómo configurar Tint en NavigationView a algunos iconos
  • addView no funciona
  • Android: establece las pestañas predeterminadas pero sin ningún contenido
  • Android: ¿Cómo obtener una vista dada una actividad dentro de una clase normal?
  • ¿Por qué se crea un FrameLayout extra para fragmentos?
  • Debe pasar en una vista no nula
  • ¿Corrección de Android EditText para el texto?
  • Error al hacer referencia a una clase interna Ver en layout / main.xml
  • Cambiar el color del cursor de searchView
  • Guardar hardware acelerado android lienzo como mapa de bits
  • Obtener las dimensiones después de setLayoutParams en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.