diff options
author | Sam Judd <sam@bu.mp> | 2013-07-19 16:54:45 -0700 |
---|---|---|
committer | Sam Judd <sam@bu.mp> | 2013-07-19 16:54:45 -0700 |
commit | c717f77320080cf52eae84f740f40911b5bf0733 (patch) | |
tree | a68b9ee82644c40ff06838565d7713706306280d /samples | |
parent | e13dcedf144c02927c122fae32179f460b21fef5 (diff) | |
download | glide-c717f77320080cf52eae84f740f40911b5bf0733.tar.gz |
Update the flickr sample for the new interface
Diffstat (limited to 'samples')
6 files changed, 102 insertions, 73 deletions
diff --git a/samples/flickr/src/com/bumptech/flickr/DirectFlickrStreamLoader.java b/samples/flickr/src/com/bumptech/flickr/DirectFlickrStreamLoader.java deleted file mode 100644 index bf4db4d2..00000000 --- a/samples/flickr/src/com/bumptech/flickr/DirectFlickrStreamLoader.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.bumptech.flickr; - -import com.bumptech.flickr.api.Api; -import com.bumptech.flickr.api.Photo; -import com.bumptech.glide.loader.model.DirectModelStreamLoader; -import com.bumptech.glide.loader.opener.HttpInputStreamOpener; -import com.bumptech.glide.loader.opener.StreamOpener; - -/** - * 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 DirectFlickrStreamLoader extends DirectModelStreamLoader<Photo>{ - - @Override - protected StreamOpener getStreamOpener(Photo model, int width, int height) { - return new HttpInputStreamOpener(Api.getPhotoURL(model, width, height)); - } - - @Override - protected String getId(Photo model) { - return model.id; - } -} diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java b/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java new file mode 100644 index 00000000..d8d10953 --- /dev/null +++ b/samples/flickr/src/com/bumptech/flickr/FlickrModelLoader.java @@ -0,0 +1,41 @@ +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; + +/** + * 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 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; + } + + @Override + public String getId(Photo model) { + return model.id; + } + + @Override + public void clear() { + if (current != null) { + current.cancel(); + current = null; + } + } +} diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java index 7dbd7a4b..5db19a69 100644 --- a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java +++ b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoGrid.java @@ -10,7 +10,7 @@ import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import com.actionbarsherlock.app.SherlockFragment; -import com.bumptech.flickr.api.Api; +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 +112,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) - .setModelStreamLoader(new FlickrStreamLoader(Api.get(getActivity()), cacheDir)) + .setModelLoader(new FlickrModelLoader(Downloader.get(getActivity()).getQueue())) .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 5d1f4ebd..36827b87 100644 --- a/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java +++ b/samples/flickr/src/com/bumptech/flickr/FlickrPhotoList.java @@ -9,6 +9,7 @@ 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; @@ -102,7 +103,7 @@ public class FlickrPhotoList extends SherlockFragment implements PhotoViewer { Glide.load(current) .into(viewHolder.imageView) - .with(new DirectFlickrStreamLoader()) + .with(new FlickrModelLoader(Downloader.get(getActivity()).getQueue())) .centerCrop() .animate(R.anim.fade_in) .begin(); diff --git a/samples/flickr/src/com/bumptech/flickr/FlickrStreamLoader.java b/samples/flickr/src/com/bumptech/flickr/FlickrStreamLoader.java deleted file mode 100644 index 9785dd5e..00000000 --- a/samples/flickr/src/com/bumptech/flickr/FlickrStreamLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.bumptech.flickr; - -import com.android.volley.Request; -import com.bumptech.flickr.api.Api; -import com.bumptech.flickr.api.Photo; -import com.bumptech.glide.loader.model.BaseModelStreamLoader; -import com.bumptech.glide.loader.opener.FileInputStreamOpener; - -import java.io.File; - -/** - * An implementation of a ModelStreamLoader that uses a separate class to download images to disk and then uses - * the path where the image is downloaded to create an input stream opener. Demonstrates one way of integrating this - * library with existing apis for download or otherwise retrieving images - * - */ -public class FlickrStreamLoader extends BaseModelStreamLoader<Photo>{ - private final Api flickrApi; - private final File cacheDir; - private Request current = null; - - public FlickrStreamLoader(Api flickrApi, File cacheDir) { - this.flickrApi = flickrApi; - this.cacheDir = cacheDir; - } - - @Override - protected void doFetchModelStreams(final Photo model, int width, int height, final ModelStreamReadyCallback cb) { - clear(); - current = flickrApi.downloadPhoto(model, cacheDir, new Api.PhotoCallback() { - @Override - public void onDownloadComplete(String path) { - cb.onStreamReady(model.id, new FileInputStreamOpener(path)); - } - }); - } - - @Override - public void clear() { - if (current != null) { - current.cancel(); - current = null; - } - } -} diff --git a/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java b/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java new file mode 100644 index 00000000..aa20a613 --- /dev/null +++ b/samples/flickr/src/com/bumptech/flickr/VolleyStreamLoader.java @@ -0,0 +1,57 @@ +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; + } + } +} |