2014-09-15 12 views
5

Gibt es eine Möglichkeit, Bilder in den Picasso-Bilder-Cache zu laden, indem Sie den Cache-Schlüssel angeben, der verwendet wird?Speichern von Bildern in Picasso mit einem eigenen Cache-Schlüssel

Nebenbei bemerkt, wenn das nicht möglich ist, habe ich die notwendigen Änderungen vorgenommen, aber ich bin mir nicht sicher, wie man das Glas wieder herstellt. Jede Anleitung, um Picasso wieder aufzubauen, wird sehr geschätzt.

+0

Es scheint eine sehr logische Frage. Ich frage mich, warum es keine Antworten hat! –

Antwort

0

ich nicht keinen öffentlichen Zugang zu dieser Funktionalität finden, aber für mich funktioniert diese Abhilfe:

//1. Init picasso, create cache 
mCache = new LruCache(mContext); 
mPicasso = new Picasso.Builder(mContext).memoryCache(mCache).build(); 

//2. Load bitmap 
mPicasso.load(uri).resize(mThumbWidth, mThumbHeight).centerCrop().into(v, callback); 

//3. In case of error (for example, in callback), you can manually download the picture and store to cache 
Bitmap bmp = <custom load> 
//make key 
StringBuilder sb = new StringBuilder(uri); 
sb.append("\nresize:").append(mThumbWidth).append("x").append(mThumbHeight).append("\ncenterCrop\n"); 
mCache.set(sb.toString(), bmp); 

Bitte beachten Sie, dass ein Schlüssel uri und Ihre benutzerdefinierten Transformation verwendet wird (die Größe, centerCrop ant so finden mehr unter com.squareup.picasso.Utils # createKey)

0

dies für mich gearbeitet

String strUrl = WWW.sultan.com....;  
    Bitmap = bitmap; 
    Picasso.with(Profile.this).load(strUrl).into(new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
      userImage.setImageBitmap(bitmap); 
      this.bitmap = bitmap; //this can be used any where in the code 

     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 

     } 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 

     } 
    });