2016-04-07 27 views
0

Ich benutze Volley, um Bild und Cache-Bild in Android zu laden. Ich möchte Bild aus dem Cache laden, wenn der Cache Bild angefordert hat. Also setze ich meine Bildansicht mit der folgenden Methode.laden Bild aus dem Cache in Volley

public void setImage(String url) 
{ 
    final ImageRequest imgRequest = new ImageRequest(url, 
      new Response.Listener<Bitmap>() { 
       @Override 
       public void onResponse(Bitmap response) { 
        img_thumb.setImageBitmap(response); 
       } 
      }, 0, 0, ImageView.ScaleType.FIT_XY, Bitmap.Config.ARGB_8888, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      //img_thumb.setBackgroundColor(Color.parseColor("#ff0000")); 
      error.printStackTrace(); 
     } 
    }); 
    MyApplication.getInstance().addToRequestQueue(imgRequest); 

} 

aber ich weiß nicht, wie aus dem Cache geladen wird, wenn das Bild aus dem Cache verfügbar ist?

Antwort

0

Volley automatisch die Bitmap aus dem Cache ziehen, wenn ein Bild Anfrage Auslösung, sofern Sie versorgt die ImageLoader Sie mit einem gültigen ImageCache Objekt erstellt:

mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() { 

     private final LruCache<String, Bitmap> mMemCache = new LruCache<String, Bitmap>(CACHE_SIZE); 

     @Override 
     public Bitmap getBitmap(String url) { 
      return mMemCache.get(url); 
     } 

     @Override 
     public void putBitmap(String url, Bitmap bitmap) { 
      mMemCache.put(url, bitmap); 
     } 
    }); 

Dann Bilder zu laden, verwenden Sie die ImageLoader Sie erstellt :

/** 
* Performs a request to load an image from a given url. 
* @param url the url to load the image from. 
* @param listener the listener which will receive a call once the image load finishes (either with success or failure). The listener is called on the UI thread. 
* @param maxWidth the max width (in pixels) of the requested image. The returned bitmap will not exceed this width. Use 0 for unlimited 
* @param maxHeight the max height (in pixels) of the requested image. The returned bitmap will not exceed this height. Use 0 for unlimited. 
* @return an ImageContainer object which can be used to access the bitmap once the request has completed, or to cancel the request before it completes. 
*/ 
public ImageLoader.ImageContainer loadImageFromUrl(final String url, final ImageRequestListener listener, int maxWidth, int maxHeight) { 


    if (url == null || Uri.parse(url) == null || Uri.parse(url).getHost() == null) { 
     Logger.e("VolleyManager: loadImageFromUrl: invalid url " + url); 
     listener.onImageLoadFailed(); 
     return null; 
    } 

    return mImageLoader.get(url, new ImageLoader.ImageListener() { 
     @Override 
     public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { 
      if (listener != null && response.getBitmap() != null) { 
       listener.onImageLoadComplete(response.getBitmap()); 
      } else if (listener != null) { 
       listener.onImageLoadFailed(; 
      } 
     } 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      if (listener != null) { 
       listener.onImageLoadFailed(); 
      } 
     } 
    }, maxWidth, maxHeight); 
+0

danke, überprüfen Sie bitte meine 2. Antwort. Wie kann ich Ihren Code in meinen Code integrieren? – serenei

+0

Verwenden Sie einfach die loadimageururl-Methode –

+0

Was ist ImageRequestListener? Wie kann ich diese Methode verwenden? – serenei