2016-04-03 11 views
0

In meinem Projekt habe ich (Volley + NetworkImageView) verwendet, um einige Bilder und Texte herunterzuladen und in einer Listenansicht zu zeigen. Bis hier habe ich kein Problem.Wie bekomme ich Bitmap von NetworkImageView?

Nun möchte ich Bitmaps von NetworkImageView bekommen und ich habe viele Methoden wie die folgenden versucht, aber keiner von ihnen arbeitete für mich.

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
Bitmap bitmap = drawable.getBitmap(); 

Eine andere Methode:

imageView.buildDrawingCache(); 
Bitmap bmap = imageView.getDrawingCache(); 

Nicht von ihnen arbeiteten ..

Jede Hilfe ist willkommen ,,

Antwort

1

Sie können die Bitmap-Referenz nicht erhalten, wie es in der nie gespeichert Bildansicht. aber man kann es mit bekommen:

((BitmapDrawable)this.getDrawable()).getBitmap(); 

beacuse, wenn Sie es mit Volley gesetzt u dies tun:

/** 
* Sets a Bitmap as the content of this ImageView. 
* 
* @param bm The bitmap to set 
*/ 
@android.view.RemotableViewMethod 
public void setImageBitmap(Bitmap bm) { 
    // Hacky fix to force setImageDrawable to do a full setImageDrawable 
    // instead of doing an object reference comparison 
    mDrawable = null; 
    if (mRecycleableBitmapDrawable == null) { 
     mRecycleableBitmapDrawable = new ImageViewBitmapDrawable(
       mContext.getResources(), bm); 
    } else { 
     mRecycleableBitmapDrawable.setBitmap(bm); 
    } 
    setImageDrawable(mRecycleableBitmapDrawable); 
} 

jedoch, wenn Sie Ihr Standardbild oder Fehlerbild oder ein beliebiges anderes Bild in einem anderen gesetzt So erhalten Sie beispielsweise BitmapDrawable, aber NinePatchDrawable nicht.

hier ist, wie zu überprüfen:

Drawable dd = image.getDrawable(); 
    if(BitmapDrawable.class.isAssignableFrom(dd.getClass())) { 
     //good one 
     Bitmap bb = ((BitmapDrawable)dd).getBitmap(); 
    } else { 
     //cannot get that one 
    } 
+0

Vielen Dank für Ihre Antwort so viel, so meinen Sie ich so etwas wie diese verwenden:. Bitmap btmap = ((BitmapDrawable) this.getDrawable()) GetBitmap(); –

+0

Stimmt es? –

+0

ja ich habe es selbst verwendet, aber besser überprüfen Sie den Typ auch sonst können Sie eine Ausnahme Castcast erhalten – djodjo

Verwandte Themen