From 0f9959213814e0456a2bc66479b4e71b5e89dbdb Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 10 Jun 2015 10:25:55 +0300 Subject: downsample grid thumbnails --- .../java/org/fox/ttcomics2/ComicListFragment.java | 35 +++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'org.fox.ttcomics/src/main/java') diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java index 8e77478..212656c 100644 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; import android.database.SQLException; +import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; @@ -31,7 +32,9 @@ import android.widget.TextView; import com.nhaarman.listviewanimations.appearance.AnimationAdapter; import com.nhaarman.listviewanimations.appearance.simple.ScaleInAnimationAdapter; +import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; +import com.nostra13.universalimageloader.core.process.BitmapProcessor; import com.shamanland.fab.FloatingActionButton; import com.shamanland.fab.ShowHideOnScroll; @@ -100,6 +103,35 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { private class ComicsListAdapter extends SimpleCursorAdapter { + DisplayImageOptions m_imageOptions = new DisplayImageOptions.Builder() + .cacheInMemory(true) + .resetViewBeforeLoading(true) + .postProcessor(new BitmapProcessor() { + @Override + public Bitmap process(Bitmap bmp) { + int maxDimension = 400; + + if (Math.max(bmp.getHeight(), bmp.getWidth()) > maxDimension) { + int newHeight; + int newWidth; + + if (bmp.getHeight() > bmp.getWidth()) { + newHeight = maxDimension; + newWidth = (int)(bmp.getWidth() * (float)maxDimension / (float)bmp.getHeight()); + } else { + newWidth = maxDimension; + newHeight = (int)(bmp.getHeight() * (float)maxDimension / (float)bmp.getWidth()); + } + + return Bitmap.createScaledBitmap(bmp, newWidth, newHeight, true); + } else { + return bmp; + } + } + }) + .cacheOnDisk(false) + .build(); + public ComicsListAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { super(context, layout, c, from, to, flags); @@ -191,7 +223,8 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { if (holder.thumbnail != null && thumbnailFile != null && thumbnailFile.exists()) { if (!thumbnailFile.getAbsolutePath().equals(holder.thumbnail.getTag())) { - m_imageLoader.displayImage("file://" + thumbnailFile.getAbsolutePath(), holder.thumbnail); + + m_imageLoader.displayImage("file://" + thumbnailFile.getAbsolutePath(), holder.thumbnail, m_imageOptions); holder.thumbnail.setTag(thumbnailFile.getAbsolutePath()); } } else { -- cgit v1.2.3