Created
August 10, 2014 18:57
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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