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:
- Cómo configurar el adaptador para searchview en la barra de acciones
- Eliminar un OnClickListener en una vista quitar todos los eventos de toque en las vistas detrás
- Android: SearchView no abre Actividad
- Modificación de atributos anidados en un Layout incluido
- En qué condiciones se llama a getChildView () en ExpandableListAdapter
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?
- Cómo escuchar el botón de búsqueda del teclado en searchView
- El método getDrawingCache () de Android 2.1 View devuelve siempre null
- El recorte de Android ViewGroup no funciona
- OnMeasure (): wrap_content, ¿cómo puedo saber el tamaño para envolver?
- ¿Cómo puedo añadir contenido personalizado en una vista de navegación
- WebView no se dibuja, WARN / webcore (5336): No se puede obtener la viewWidth después del primer diseño
- Presentar contenido html como "páginas dinámicas"
- ¿Cómo enviar la vista hacia atrás? ¿Cómo controlar la orden z de forma programática?
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 detectar cuando el usuario activa / desactiva el estado del GPS?
- Redirigir audio / crear rutas de sonido alternativas en Android