package com.metis.base.manager; import android.content.Context; import android.graphics.Bitmap; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import com.metis.base.R; import com.metis.base.widget.displayer.SquareRoundDisplayer; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.imageaware.ImageViewAware; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener; /** * Created by Beak on 2015/7/10. */ public class DisplayManager extends AbsManager { private static DisplayManager sManager = null; public synchronized static DisplayManager getInstance (Context context) { if (sManager == null) { sManager = new DisplayManager(context.getApplicationContext()); } return sManager; } private static final int CACHE_SIZE = 8 * 1024 * 1024; private ImageLoader mImageLoader = ImageLoader.getInstance(); private ImageLoaderConfiguration mConfiguration = null; private DisplayImageOptions mDefaultOptions = null; private DisplayManager(Context context) { super(context); if (!mImageLoader.isInited()) { mDefaultOptions = new DisplayImageOptions.Builder() /*.show*/ .cacheOnDisk(true) .cacheInMemory(true) .build(); mConfiguration = new ImageLoaderConfiguration.Builder(context) .defaultDisplayImageOptions(mDefaultOptions) .diskCacheSize(CACHE_SIZE) .memoryCacheSize(CACHE_SIZE) .threadPoolSize(5) .diskCacheFileCount(100) .build(); mImageLoader.setDefaultLoadingListener(new ImageLoadingListener() { @Override public void onLoadingStarted(String s, View view) { view.setBackgroundColor(getContext().getResources().getColor(android.R.color.darker_gray)); } @Override public void onLoadingFailed(String s, View view, FailReason failReason) { } @Override public void onLoadingComplete(String s, View view, Bitmap bitmap) { if (bitmap != null) { view.setBackground (null); } } @Override public void onLoadingCancelled(String s, View view) { } }); mImageLoader.init(mConfiguration); } } public ImageLoader getImageLoader () { return mImageLoader; } public void display (String uri, ImageView iv, DisplayImageOptions options, ImageLoadingListener loadingListener, ImageLoadingProgressListener progressListener) { mImageLoader.displayImage(uri, iv, options, loadingListener, progressListener); } public void display (String uri, ImageView iv, DisplayImageOptions options, ImageLoadingListener loadingListener) { mImageLoader.displayImage(uri, iv, options, loadingListener); } public void display (String uri, ImageView iv, ImageLoadingListener listener) { mImageLoader.displayImage(uri, iv, listener); } public void display (String uri, ImageView iv, DisplayImageOptions options) { mImageLoader.displayImage(uri, iv, options); } public void display (String uri, ImageView iv) { mImageLoader.displayImage(uri, iv); } public DisplayImageOptions makeRoundDisplayImageOptions (int size) { DisplayImageOptions mOptions = new DisplayImageOptions.Builder() .cloneFrom(mDefaultOptions) .displayer(new SquareRoundDisplayer(size)) .build(); return mOptions; } public void displayProfile (String uri, ImageView iv) { final int profileSize = getContext().getResources().getDimensionPixelSize(R.dimen.profile_size_middle); final int radius = getContext().getResources().getDimensionPixelSize(R.dimen.profile_radius); DisplayImageOptions options = new DisplayImageOptions.Builder() .cloneFrom(mDefaultOptions) .displayer(new SquareRoundDisplayer(profileSize, radius)) .build(); if (TextUtils.isEmpty(uri)) { iv.setImageResource(R.drawable.profile_default); } else { mImageLoader.displayImage(uri, iv, options); } } public DisplayImageOptions getDefaultOptions () { return mDefaultOptions; } }