Skip to content

Instantly share code, notes, and snippets.

@cbeyls
Created August 10, 2014 18:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cbeyls/f35a75b59ac2dc4610b7 to your computer and use it in GitHub Desktop.
Save cbeyls/f35a75b59ac2dc4610b7 to your computer and use it in GitHub Desktop.
ImageLoader implementation for my own fork of the Cast Companion Library using the Volley library. See: https://github.com/cbeyls/CastCompanionLibrary-android
package com.google.sample.castcompanionlibrary.cast.imageloader;
import android.content.Context;
import android.util.DisplayMetrics;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader.ImageContainer;
import com.android.volley.toolbox.ImageLoader.ImageListener;
/**
* ImageLoader implementation for the Cast Companion Library using the Volley library.
*
* @author Christophe Beyls
*
*/
public class VolleyImageLoader implements ImageLoader {
private final int mMaxImageSize;
private final com.android.volley.toolbox.ImageLoader mVolleyLoader;
private static class VolleyRequest implements ImageListener, ImageLoader.Request {
private final Callbacks mCallbacks;
private ImageContainer mContainer;
public VolleyRequest(Callbacks callbacks) {
mCallbacks = callbacks;
}
@Override
public void onErrorResponse(VolleyError error) {
mCallbacks.onResponse(null);
}
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
mCallbacks.onResponse(response.getBitmap());
}
public void setImageContainer(ImageContainer container) {
mContainer = container;
}
@Override
public String getUrl() {
return mContainer.getRequestUrl();
}
}
public VolleyImageLoader(Context context, com.android.volley.toolbox.ImageLoader loader) {
// Use the device primary screen dimensions as max image size
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
mMaxImageSize = Math.max(metrics.widthPixels, metrics.heightPixels);
mVolleyLoader = loader;
}
@Override
public Request load(String url, Callbacks callbacks) {
VolleyRequest volleyRequest = new VolleyRequest(callbacks);
volleyRequest.setImageContainer(mVolleyLoader.get(url, volleyRequest, mMaxImageSize, mMaxImageSize));
return volleyRequest;
}
@Override
public void cancelRequest(Request request) {
((VolleyRequest) request).mContainer.cancelRequest();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment