package me.ccrama.redditslide; import android.content.Context; import android.graphics.Bitmap; import android.os.Environment; import com.nostra13.universalimageloader.cache.disc.DiskCache; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.download.BaseImageDownloader; import java.io.File; import java.io.IOException; import me.ccrama.redditslide.util.OkHttpImageDownloader; /** * Created by carlo_000 on 10/19/2015. */ /*Adapted from https://github.com/Kennyc1012/Opengur */ public class ImageLoaderUtils { public static ImageLoader imageLoader; private ImageLoaderUtils() { } public static File getCacheDirectory(Context context) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && context.getExternalCacheDir() != null) { return context.getExternalCacheDir(); } return context.getCacheDir(); } public static File getCacheDirectoryGif(Context context) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && context.getExternalCacheDir() != null) { return new File(context.getExternalCacheDir() + File.separator + "gifs"); } return new File(context.getCacheDir() + File.separator + "gifs"); } public static void initImageLoader(Context context) { long discCacheSize = 1024 * 1024; DiskCache discCache; File dir = getCacheDirectory(context); int threadPoolSize; discCacheSize *= 100; threadPoolSize = 7; if (discCacheSize > 0) { try { dir.mkdir(); discCache = new LruDiskCache(dir, new Md5FileNameGenerator(), discCacheSize); } catch (IOException e) { discCache = new UnlimitedDiskCache(dir); } } else { discCache = new UnlimitedDiskCache(dir); } options = new DisplayImageOptions.Builder() .cacheOnDisk(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) .cacheInMemory(false) .resetViewBeforeLoading(false) .displayer(new FadeInBitmapDisplayer(250)) .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .threadPoolSize(threadPoolSize) .denyCacheImageMultipleSizesInMemory() .diskCache(discCache) .threadPoolSize(4) .imageDownloader(new OkHttpImageDownloader(context)) .defaultDisplayImageOptions(options) .build(); if (ImageLoader.getInstance().isInited()) { ImageLoader.getInstance().destroy(); } imageLoader = ImageLoader.getInstance(); imageLoader.init(config); } public static DisplayImageOptions options; }