package com.swifty.fillcolor.util; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.view.View; import android.widget.ImageView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; import com.swifty.fillcolor.R; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Random; public class ImageLoaderUtil { public static ImageLoader imageLoader = ImageLoader.getInstance(); private ImageLoaderUtil() { } public static ImageLoader getInstance() { return imageLoader; } public static DisplayImageOptions DetailImageOptionsNoCache() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.blank) .showImageForEmptyUri(R.mipmap.blank) .showImageOnFail(R.mipmap.blank).cacheInMemory(false) .cacheOnDisk(false).considerExifParams(true) .bitmapConfig(Bitmap.Config.ARGB_8888) .imageScaleType(ImageScaleType.NONE).build(); return options; } public static class AnimateFirstDisplayListener extends SimpleImageLoadingListener { static final List<String> displayedImages = Collections .synchronizedList(new LinkedList<String>()); @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (imageUri.equals(view.getTag())) { L.e(String.valueOf(view.getTag())); ((ImageView)view).setImageBitmap(loadedImage); return; } if (loadedImage != null) { ImageView imageView = (ImageView) view; boolean firstDisplay = !displayedImages.contains(imageUri); if (firstDisplay) { FadeInBitmapDisplayer.animate(imageView, 500); displayedImages.add(imageUri); } } } } public static DisplayImageOptions getOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(getRandomColorDrawable()) .showImageForEmptyUri(R.mipmap.loading14) .showImageOnFail(R.mipmap.loading14).cacheInMemory(false) .cacheOnDisk(true).considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY).build(); return options; } public static DisplayImageOptions getNoCacheOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(getRandomColorDrawable()) .showImageForEmptyUri(R.mipmap.loading14) .showImageOnFail(R.mipmap.loading14).cacheInMemory(false) .cacheOnDisk(false).considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY).build(); return options; } public static DisplayImageOptions getOpenAllCacheOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(getRandomColorDrawable()) .showImageForEmptyUri(R.mipmap.loading14) .showImageOnFail(R.mipmap.loading14).cacheInMemory(true) .cacheOnDisk(true).considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY).build(); return options; } public static DisplayImageOptions getOptions(Drawable loadingdrawable) { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(loadingdrawable) .showImageForEmptyUri(R.mipmap.loading14) .showImageOnFail(R.mipmap.loading14).cacheInMemory(true) .cacheOnDisk(true).considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY).build(); return options; } public static DisplayImageOptions getNoCacheOptions(Drawable loadingdrawable) { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(loadingdrawable) .showImageForEmptyUri(R.mipmap.loading14) .showImageOnFail(R.mipmap.loading14).cacheInMemory(false) .cacheOnDisk(false).considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY).build(); return options; } public static DisplayImageOptions getOpenAllCacheOptions(Drawable loadingdrawable) { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(loadingdrawable) .showImageForEmptyUri(R.mipmap.loading14) .showImageOnFail(R.mipmap.loading14).cacheInMemory(true) .cacheOnDisk(true).considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY).build(); return options; } public static DisplayImageOptions DetailImageOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.blank) .showImageForEmptyUri(R.mipmap.blank) .showImageOnFail(R.mipmap.blank).cacheInMemory(false) .cacheOnDisk(true).considerExifParams(true) .bitmapConfig(Bitmap.Config.ARGB_8888) .imageScaleType(ImageScaleType.NONE).build(); return options; } private static Drawable getRandomColorDrawable() { Drawable drawable; Random random = new Random(); int color = Color.argb(255, random.nextInt(256), random.nextInt(256), random.nextInt(256)); drawable = new ColorDrawable(color); return drawable; } }