2012-01-20 45 views
6

Quiero capturar el contenido de ImageView utilizando DrawingCache. Escribí el siguiente código.getDrawingCache() siempre devuelve nulo

iv1 = (ImageView)findViewById(R.id.iv1); 
iv2 = (ImageView)findViewById(R.id.iv2);    
iv1.setDrawingCacheEnabled(true); 
Bitmap myScreenshot = iv1.getDrawingCache(); 
iv2.setImageBitmap(myScreenshot); 

Pero solo obtengo una imagen en la pantalla. Más tarde llegué a saber myScreenshot es nulo

Vi muchas publicaciones con respecto al mismo problema, pero no hay una solución adecuada.

Pensé que los permisos que tenemos que agregar en manifiesto? o permiso de root requerido para lograr esto? Por favor, ayúdame con respecto a este problema.

Respuesta

10

Intente llamar buildDrawingCache() antes getDrawingCache()

EDIT: llamada getDrawingCache(), después de que la página se carga, en lugar de onCreate

+0

He añadido iv1.buildDrawingCache(); antes de getDrawingCache(). no use –

+0

comprobó que iv1 tiene una imagen cuando se ejecuta la aplicación. También especifique dónde está llamando exactamente a su código. Puede que lo esté llamando antes de que se inicialicen las vistas – aqs

+0

en el archivo xml. Sólo le doy a android: src for iv1. El código que publiqué aquí está después de setContentView (R.layout.main); en onCreate() ¿Es correcto? –

0
imageview.setBackgroundResource(R.drawable.imageview);     

imageview1.setBackgroundResource(R.drawable.imageview1); 

uso de estas dos imágenes es screan

<RelativeLayout 
    android:id="@+id/item"    
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="320dp" 
     android:layout_height="486dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/iv1" /> 

    <ImageView 
     android:id="@+id/ic_launcer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:background="@drawable/iv2" /> 

</RelativeLayout> 
1

No hiciste iv1.buildDrawingCache(true); añadir línea antes
Bitmap myScreenshot = iv1.getDrawingCache();

+0

Su respuesta es exactamente la misma que la aceptada por @aqs – gecco

2

getDrawingCache llamada() en onWindowFocusChanged() y no en onCreate(), entonces no se va a nulo.

+0

¡gracias, funcionó para mí! –

Cuestiones relacionadas