summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/asynctask/FeedImageLoader.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-10-14 13:50:05 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-10-14 13:50:05 +0200
commita62cf5d14ca8411339352bd0dc4b07697985352b (patch)
tree67f9b20876cdf0b28c44b72de898ce9ba41acfd8 /src/de/danoeh/antennapod/asynctask/FeedImageLoader.java
parent9eef78109f857cb4fb3e5b143602be61ebf6523e (diff)
downloadAntennaPod-a62cf5d14ca8411339352bd0dc4b07697985352b.zip
Load new bitmap if imageview's size has become larger
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask/FeedImageLoader.java')
-rw-r--r--src/de/danoeh/antennapod/asynctask/FeedImageLoader.java74
1 files changed, 26 insertions, 48 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/FeedImageLoader.java b/src/de/danoeh/antennapod/asynctask/FeedImageLoader.java
index b6c634b2c..9d6d0fe3d 100644
--- a/src/de/danoeh/antennapod/asynctask/FeedImageLoader.java
+++ b/src/de/danoeh/antennapod/asynctask/FeedImageLoader.java
@@ -28,10 +28,6 @@ public class FeedImageLoader {
public static final int IMAGE_TYPE_THUMBNAIL = 0;
public static final int IMAGE_TYPE_COVER = 1;
- private static final String CACHE_DIR = "miroguide_thumbnails";
- private static final int CACHE_SIZE = 20 * 1024 * 1024;
- private static final int VALUE_SIZE = 500 * 1024;
-
private Handler handler;
private ExecutorService executor;
@@ -47,36 +43,38 @@ public class FeedImageLoader {
final int coverCacheSize = 1024 * 1024 * memClass / 8;
final int thumbnailCacheSize = 1024 * 1024 * memClass / 8;
- private LruCache<String, Bitmap> coverCache;
- private LruCache<String, Bitmap> thumbnailCache;
+ private LruCache<String, CachedBitmap> coverCache;
+ private LruCache<String, CachedBitmap> thumbnailCache;
private FeedImageLoader() {
handler = new Handler();
executor = createExecutor();
- coverCache = new LruCache<String, Bitmap>(coverCacheSize) {
+ coverCache = new LruCache<String, CachedBitmap>(coverCacheSize) {
@SuppressLint("NewApi")
@Override
- protected int sizeOf(String key, Bitmap value) {
+ protected int sizeOf(String key, CachedBitmap value) {
if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= 12)
- return value.getByteCount();
+ return value.getBitmap().getByteCount();
else
- return (value.getRowBytes() * value.getHeight());
+ return (value.getBitmap().getRowBytes() * value.getBitmap()
+ .getHeight());
}
};
- thumbnailCache = new LruCache<String, Bitmap>(thumbnailCacheSize) {
+ thumbnailCache = new LruCache<String, CachedBitmap>(thumbnailCacheSize) {
@SuppressLint("NewApi")
@Override
- protected int sizeOf(String key, Bitmap value) {
+ protected int sizeOf(String key, CachedBitmap value) {
if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= 12)
- return value.getByteCount();
+ return value.getBitmap().getByteCount();
else
- return (value.getRowBytes() * value.getHeight());
+ return (value.getBitmap().getRowBytes() * value.getBitmap()
+ .getHeight());
}
@@ -121,9 +119,9 @@ public class FeedImageLoader {
*/
public void loadCoverBitmap(FeedImage image, ImageView target, int length) {
if (image != null && image.getFile_url() != null) {
- Bitmap bitmap = getBitmapFromCoverCache(image.getFile_url());
- if (bitmap != null) {
- target.setImageBitmap(bitmap);
+ CachedBitmap cBitmap = getBitmapFromCoverCache(image.getFile_url());
+ if (cBitmap != null && cBitmap.getLength() >= length) {
+ target.setImageBitmap(cBitmap.getBitmap());
} else {
target.setImageResource(R.drawable.default_cover);
FeedImageDecodeWorkerTask worker = new FeedImageDecodeWorkerTask(
@@ -144,23 +142,23 @@ public class FeedImageLoader {
public void loadThumbnailBitmap(FeedImage image, ImageView target) {
loadThumbnailBitmap(image, target, target.getHeight());
}
-
+
/**
* Load a bitmap from the thumbnail cache. If the bitmap is not in the
* cache, it will be loaded from the disk. This method should either be
* called if the ImageView's size has already been set or inside a Runnable
* which is posted to the ImageView's message queue.
*/
- public void loadThumbnailBitmap(FeedImage image, ImageView target, int length) {
+ public void loadThumbnailBitmap(FeedImage image, ImageView target,
+ int length) {
if (image != null && image.getFile_url() != null) {
- Bitmap bitmap = getBitmapFromThumbnailCache(image.getFile_url());
- if (bitmap != null) {
- target.setImageBitmap(bitmap);
+ CachedBitmap cBitmap = getBitmapFromThumbnailCache(image.getFile_url());
+ if (cBitmap != null && cBitmap.getLength() >= length) {
+ target.setImageBitmap(cBitmap.getBitmap());
} else {
target.setImageResource(R.drawable.default_cover);
FeedImageDecodeWorkerTask worker = new FeedImageDecodeWorkerTask(
- handler, target, image, length,
- IMAGE_TYPE_THUMBNAIL);
+ handler, target, image, length, IMAGE_TYPE_THUMBNAIL);
executor.submit(worker);
}
} else {
@@ -168,26 +166,6 @@ public class FeedImageLoader {
}
}
- public void loadMiroGuideThumbnail(MiroGuideChannel channel,
- ImageView target) {
- if (channel.getThumbnailUrl() != null) {
- Bitmap bitmap = getBitmapFromThumbnailCache(channel
- .getThumbnailUrl());
- if (bitmap == null) {
- if (AppConfig.DEBUG)
- Log.d(TAG, "Starting new thumbnail download");
- target.setImageResource(R.drawable.default_cover);
-
- executor.submit(new MiroGuideThumbnailDownloader(handler,
- target, channel, target.getHeight(), coverCacheSize));
- } else {
- target.setImageBitmap(bitmap);
- }
- } else {
- target.setImageResource(R.drawable.default_cover);
- }
- }
-
public void clearExecutorQueue() {
executor.shutdownNow();
if (AppConfig.DEBUG)
@@ -205,11 +183,11 @@ public class FeedImageLoader {
return thumbnailCache.get(image.getFile_url()) != null;
}
- public Bitmap getBitmapFromThumbnailCache(String key) {
+ private CachedBitmap getBitmapFromThumbnailCache(String key) {
return thumbnailCache.get(key);
}
- public void addBitmapToThumbnailCache(String key, Bitmap bitmap) {
+ public void addBitmapToThumbnailCache(String key, CachedBitmap bitmap) {
thumbnailCache.put(key, bitmap);
}
@@ -217,11 +195,11 @@ public class FeedImageLoader {
return coverCache.get(image.getFile_url()) != null;
}
- public Bitmap getBitmapFromCoverCache(String key) {
+ private CachedBitmap getBitmapFromCoverCache(String key) {
return coverCache.get(key);
}
- public void addBitmapToCoverCache(String key, Bitmap bitmap) {
+ public void addBitmapToCoverCache(String key, CachedBitmap bitmap) {
coverCache.put(key, bitmap);
}