aboutsummaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorSam Judd <sam@bu.mp>2013-07-19 18:20:02 -0700
committerSam Judd <sam@bu.mp>2013-07-19 18:48:07 -0700
commitffecc1458c51228061cfed14d7f81c7b59db3f61 (patch)
tree3e6858dc79e3ae579028f423e4785e91585f31d3 /samples
parent633966f8087dc4ef5e52ef0f559ec8090fbbc945 (diff)
downloadglide-ffecc1458c51228061cfed14d7f81c7b59db3f61.tar.gz
Use Glide's Volley api in flickr sample
Diffstat (limited to 'samples')
-rw-r--r--samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java24
-rw-r--r--samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java3
-rw-r--r--samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java3
-rw-r--r--samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java57
-rw-r--r--samples/flickr/src/com/bumptech/flickr/api/Api.java71
-rw-r--r--samples/flickr/src/com/bumptech/flickr/api/Downloader.java101
6 files changed, 28 insertions, 231 deletions
diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java b/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java
index d8d10953..2165b1bf 100644
--- a/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java
+++ b/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java
@@ -3,27 +3,16 @@ package com.bumptech.flickr;
import com.android.volley.RequestQueue;
import com.bumptech.flickr.api.Api;
import com.bumptech.flickr.api.Photo;
-import com.bumptech.glide.loader.stream.StreamLoader;
-import com.bumptech.glide.loader.model.ModelLoader;
+import com.bumptech.glide.loader.model.VolleyModelLoader;
/**
* An implementation of ModelStreamLoader that leverages the StreamOpener class and the ExecutorService backing the
* ImageManager to download the image and resize it in memory before saving the resized version
* directly to the disk cache.
*/
-public class FlickrModelLoader implements ModelLoader<Photo> {
- private final RequestQueue requestQueue;
- private StreamLoader current;
-
+public class FlickrModelLoader extends VolleyModelLoader<Photo> {
public FlickrModelLoader(RequestQueue requestQueue) {
- this.requestQueue = requestQueue;
- }
-
- @Override
- public StreamLoader getStreamOpener(Photo model, int width, int height) {
- clear();
- current = new VolleyStreamLoader(requestQueue, Api.getPhotoURL(model, width, height));
- return current;
+ super(requestQueue);
}
@Override
@@ -32,10 +21,7 @@ public class FlickrModelLoader implements ModelLoader<Photo> {
}
@Override
- public void clear() {
- if (current != null) {
- current.cancel();
- current = null;
- }
+ protected String getUrl(Photo model, int width, int height) {
+ return Api.getPhotoURL(model, width, height);
}
}
diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java
index 5db19a69..f01c3f7b 100644
--- a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java
+++ b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java
@@ -10,7 +10,6 @@ import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import com.actionbarsherlock.app.SherlockFragment;
-import com.bumptech.flickr.api.Downloader;
import com.bumptech.flickr.api.Photo;
import com.bumptech.glide.Glide;
import com.bumptech.glide.presenter.ImagePresenter;
@@ -112,7 +111,7 @@ public class FlickrPhotoGrid extends SherlockFragment implements PhotoViewer {
final Animation fadeIn = AnimationUtils.loadAnimation(getActivity(), R.anim.fade_in);
imagePresenter = new ImagePresenter.Builder<Photo>()
.setImageView(imageView)
- .setModelLoader(new FlickrModelLoader(Downloader.get(getActivity()).getQueue()))
+ .setModelLoader(new FlickrModelLoader(Glide.get().getRequestQueue(getActivity())))
.setImageLoader(new CenterCrop(Glide.get().getImageManager(getActivity())))
.setImageSetCallback(new ImageSetCallback() {
@Override
diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java
index 36827b87..bca42f68 100644
--- a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java
+++ b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java
@@ -9,7 +9,6 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragment;
-import com.bumptech.flickr.api.Downloader;
import com.bumptech.flickr.api.Photo;
import com.bumptech.glide.Glide;
@@ -103,7 +102,7 @@ public class FlickrPhotoList extends SherlockFragment implements PhotoViewer {
Glide.load(current)
.into(viewHolder.imageView)
- .with(new FlickrModelLoader(Downloader.get(getActivity()).getQueue()))
+ .with(new FlickrModelLoader(Glide.get().getRequestQueue(getActivity())))
.centerCrop()
.animate(R.anim.fade_in)
.begin();
diff --git a/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java b/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java
deleted file mode 100644
index aa20a613..00000000
--- a/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.bumptech.flickr;
-
-import com.android.volley.NetworkResponse;
-import com.android.volley.Request;
-import com.android.volley.RequestQueue;
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
-import com.bumptech.glide.loader.stream.StreamLoader;
-
-import java.io.ByteArrayInputStream;
-import java.net.URL;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sam
- * Date: 7/19/13
- * Time: 8:51 AM
- * To change this template use File | Settings | File Templates.
- */
-public class VolleyStreamLoader implements StreamLoader {
- private final RequestQueue requestQueue;
- private final URL url;
- private Request current = null;
-
- public VolleyStreamLoader(RequestQueue requestQueue, URL url) {
- this.requestQueue = requestQueue;
- this.url = url;
- }
-
- @Override
- public void loadStream(final StreamReadyCallback cb) {
- current = requestQueue.add(new Request<ByteArrayInputStream>(Request.Method.GET, url.toString(), new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- cb.onException(error);
- }
- }) {
- @Override
- protected Response<ByteArrayInputStream> parseNetworkResponse(NetworkResponse response) {
- return Response.success(new ByteArrayInputStream(response.data), getCacheEntry());
- }
-
- @Override
- protected void deliverResponse(ByteArrayInputStream response) {
- cb.onStreamReady(response);
- }
- });
- }
-
- @Override
- public void cancel() {
- if (current != null) {
- current.cancel();
- current = null;
- }
- }
-}
diff --git a/samples/flickr/src/com/bumptech/flickr/api/Api.java b/samples/flickr/src/com/bumptech/flickr/api/Api.java
index 82f64637..22ac5c97 100644
--- a/samples/flickr/src/com/bumptech/flickr/api/Api.java
+++ b/samples/flickr/src/com/bumptech/flickr/api/Api.java
@@ -2,22 +2,21 @@ package com.bumptech.flickr.api;
import android.content.Context;
import com.android.volley.Request;
-import com.bumptech.flickr.R;
+import com.android.volley.RequestQueue;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.StringRequest;
+import com.bumptech.glide.Glide;
import com.bumptech.glide.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* Created with IntelliJ IDEA.
@@ -28,8 +27,6 @@ import java.util.Set;
*/
public class Api {
private static Api API;
- public static final String SEARCH_COMPLETED_ACTION = "search_completed";
-
private static final String API_KEY = "f0e6fbb5fdf1f3842294a1d21f84e8a6";
private static final String SIGNED_API_URL = "http://api.flickr.com/services/rest/?method=%s&format=json&api_key=" + API_KEY;
private static final String PHOTO_URL = "http://farm%s.staticflickr.com/%s/%s_%s_%s.jpg";
@@ -49,6 +46,8 @@ public class Api {
Collections.sort(SORTED_SIZE_KEYS);
}
+ private final RequestQueue requestQueue;
+
private static String getSizeKey(int width, int height) {
final int largestEdge = Math.max(width, height);
@@ -66,33 +65,19 @@ public class Api {
public void onSearchCompleted(List<Photo> photos);
}
- public interface PhotoCallback {
- public void onDownloadComplete(String path);
- }
-
- private final Downloader downloader;
- private Set<String> downloadedFilesNames = new HashSet<String>();
- private final String sizeKey;
-
public static Api get(Context applicationContext) {
if (API == null) {
- API = new Api(applicationContext, applicationContext.getResources().getDimensionPixelSize(R.dimen.large_photo_side));
+ API = new Api(applicationContext);
}
return API;
}
- protected Api(Context applicationContext, int maxPhotoSize) {
- this.downloader = Downloader.get(applicationContext);
- this.sizeKey = getSizeKey(maxPhotoSize, maxPhotoSize);
+ protected Api(Context applicationContext) {
+ this.requestQueue = Glide.get().getRequestQueue(applicationContext);
}
- public static URL getPhotoURL(Photo photo, int width, int height) {
- try {
- return new URL(getPhotoUrl(photo, getSizeKey(width, height)));
- } catch (MalformedURLException e) {
- e.printStackTrace();
- return null;
- }
+ public static String getPhotoURL(Photo photo, int width, int height) {
+ return getPhotoUrl(photo, getSizeKey(width, height));
}
private static String getUrlForMethod(String method) {
@@ -109,12 +94,12 @@ public class Api {
public void search(String text, final SearchCallback cb) {
Log.d("API: searching");
- downloader.download(getSearchUrl(text), new Downloader.StringCallback() {
+ requestQueue.add(new StringRequest(Request.Method.GET, getSearchUrl(text), new Response.Listener<String>() {
@Override
- public void onDownloadReady(String result) {
+ public void onResponse(String response) {
try {
//cut out initial flickJsonApi(
- JSONObject searchResults = new JSONObject(result.substring(14, result.length()-1));
+ JSONObject searchResults = new JSONObject(response.substring(14, response.length()-1));
JSONArray photos = searchResults.getJSONObject("photos").getJSONArray("photo");
List<Photo> results = new ArrayList<Photo>(photos.length());
for (int i = 0; i < photos.length(); i++) {
@@ -125,25 +110,11 @@ public class Api {
e.printStackTrace();
}
}
- });
- }
-
- public Request downloadPhoto(Photo photo, File cacheDir, final PhotoCallback cb) {
- File out = new File(cacheDir.getPath() + File.separator + photo.id + photo.secret + sizeKey);
- final String path = out.getPath();
- Request result = null;
- if (downloadedFilesNames.contains(path)) {
- cb.onDownloadComplete(path);
- } else {
- Log.d("API: missing photo, downloading");
- result = downloader.download(getPhotoUrl(photo, sizeKey), out, new Downloader.DiskCallback() {
- @Override
- public void onDownloadReady(String path) {
- downloadedFilesNames.add(path);
- cb.onDownloadComplete(path);
- }
- });
- }
- return result;
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ error.printStackTrace();
+ }
+ }));
}
}
diff --git a/samples/flickr/src/com/bumptech/flickr/api/Downloader.java b/samples/flickr/src/com/bumptech/flickr/api/Downloader.java
deleted file mode 100644
index 32e9309f..00000000
--- a/samples/flickr/src/com/bumptech/flickr/api/Downloader.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.bumptech.flickr.api;
-
-import android.content.Context;
-import com.android.volley.NetworkResponse;
-import com.android.volley.Request;
-import com.android.volley.RequestQueue;
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
-import com.android.volley.toolbox.StringRequest;
-import com.android.volley.toolbox.Volley;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sam
- * Date: 1/6/13
- * Time: 10:36 AM
- * To change this template use File | Settings | File Templates.
- */
-public class Downloader {
- private static Downloader DOWNLOADER;
- private final RequestQueue queue;
-
- public static Downloader get(Context context) {
- if (DOWNLOADER == null) {
- DOWNLOADER = new Downloader(context);
- }
- return DOWNLOADER;
- }
-
- public Downloader(Context context) {
- queue = Volley.newRequestQueue(context);
- }
-
- public RequestQueue getQueue() {
- return queue;
- }
-
- public interface StringCallback {
- public void onDownloadReady(String result);
- }
-
- public interface DiskCallback {
- public void onDownloadReady(String path);
- }
-
- public void download(String url, final StringCallback cb) {
- queue.add(new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
- @Override
- public void onResponse(String response) {
- cb.onDownloadReady(response);
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- error.printStackTrace();
- }
- }));
- }
-
- public Request download(String url, final File out, final DiskCallback cb) {
- return queue.add(new Request<String>(Request.Method.GET, url, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- error.printStackTrace();
- }
- }) {
- @Override
- protected Response<String> parseNetworkResponse(NetworkResponse response) {
- OutputStream os = null;
- try {
- os = new BufferedOutputStream(new FileOutputStream(out));
- os.write(response.data);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (os != null) {
- try {
- os.close();
- } catch (IOException e) { }
- }
- }
- return Response.success(out.getAbsolutePath(), getCacheEntry());
- }
-
- @Override
- protected void deliverResponse(String response) {
- cb.onDownloadReady(response);
- }
- });
-
- }
-}