Android--Universal-Image-Loader异步图片加载框架封装思路及实现
2017-07-23 22:56
971 查看
框架简介:
名称:nostra13/Android-Universal-Image-Loader
开源网址:https://github.com/nostra13/Android-Universal-Image-Loader
封装思路和目的:
代码实现:
import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.ImageView; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache; 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.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.download.BaseImageDownloader; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; /** * @author: xiaoxu * @function: 初始化UniverImageLoader, 并用来加载网络图片 * @date: 17/7/20 */ public class ImageLoaderUtil { private static final int THREAD_COUNT = 3;//UIL允许最多有线程数 private static final int PRIORITY = 2;//图片加载优先级 private static final int MEMORY_CACHE_SIZE = 2 * 1024 * 1024;//内存 private static final int DISK_CACHE_SIZE = 50 * 1024 * 1024;//UIL缓存图片最大空间 private static final int CONNECTION_TIME_OUT = 5 * 1000;//连接超时时间 private static final int READ_TIME_OUT = 30 * 1000;//读取超时时间 private static ImageLoaderUtil mInstance = null; private static ImageLoader mImageLoader = null; /** * 私有构造方法完成初始化工作 * * @param context */ private ImageLoaderUtil(Context context) { /*配置imageLoader的参数*/ ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(context) .threadPoolSize(THREAD_COUNT) .threadPriority(Thread.NORM_PRIORITY - PRIORITY)//根据正常级别进行降级处理(相对优先级) .denyCacheImageMultipleSizesInMemory()//防止缓存多套图片到内存中 //.memoryCache(new UsingFreqLimitedMemoryCache(MEMORY_CACHE_SIZE)) .memoryCache(new WeakMemoryCache())//使用弱引用内存缓存 .diskCacheSize(DISK_CACHE_SIZE) .diskCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO)//图片下载顺序 .defaultDisplayImageOptions(getDefaultOptions()) .imageDownloader(new BaseImageDownloader(context , CONNECTION_TIME_OUT , READ_TIME_OUT))//设置图片下载器 .writeDebugLogs()//debug模式下输出日志 .build(); //初始化ImageLoaderConfiguration对象 ImageLoader.getInstance().init(config); //获取ImageLloader实例 mImageLoader = ImageLoader.getInstance(); } /********************************** * 以单例模式创建ImageLoaderUtil对象,对外提供接口 * ************************************ */ public static ImageLoaderUtil getInstance(Context context) { //第一次判空 if (mInstance == null) { //第二次在同步块中判空(防止在其他线程中创建 ) synchronized (ImageLoaderUtil.class) { if (mInstance == null) { mInstance = new ImageLoaderUtil(context); } } } return mInstance; } /********************************** * 默认参数配置,提供必要的参数配置API * 图片下载后的默认参数配置 * ************************************ */ private DisplayImageOptions get 4000 DefaultOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true)//设置下载的图片是否缓存在内存中, 重要,否则图片不会缓存到内存中 .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中, 重要,否则图片不会缓存到硬盘中 .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转) .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型(降低图片色彩,减少内存占用) .decodingOptions(new BitmapFactory.Options())//设置图片的解码配置 .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位 .build(); return options; } /********************************** * 对外提供加载图片的API ********************************/ public void displayImage(ImageView imageView, String path, DisplayImageOptions options, ImageLoadingListener listener) { if (mImageLoader != null) { mImageLoader.displayImage(path, imageView, options, listener); } } public void displayImage(ImageView imageView, String path, ImageLoadingListener listener) { if (mImageLoader != null) { mImageLoader.displayImage(path, imageView, null, listener); } } public void displayImage(ImageView imageView, String path) { displayImage(imageView, path, null); } }
相关文章推荐
- Android 使用图片异步加载框架Universal Image Loader的问题
- Android图片异步加载框架Android-Universal-Image-Loader
- Android图片异步加载框架Android-Universal-Image-Loader
- 图片异步加载框架 Android-Universal-Image-Loader的一些参数说明及方法
- 图片异步加载框架 Android-Universal-Image-Loader
- 图片异步加载框架 Android-Universal-Image-Loader
- Android-Universal-Image-Loader异步加载图片框架学习研究
- Android图片异步加载框架Android-Universal-Image-Loader
- Android图片异步加载框架Universal Image Loader的源码分析
- 异步加载图片框架Android-Universal-Image-Loader的使用
- Android图片异步加载框架Android-Universal-Image-Loader
- 图片异步加载框架 Android-Universal-Image-Loader
- Android-Universal-Image-Loader异步加载图片框架学习研究
- 图片异步加载框架 Android-Universal-Image-Loader
- 图片异步加载框架 Android-Universal-Image-Loader
- 【Android】图片异步加载三方框架Universal Image Loader详细配置
- Android图片异步加载框架Android-Universal-Image-Loader
- Android-Universal-Image-Loader异步加载图片框架学习研究
- Android图片异步加载框架Android-Universal-Image-Loader
- 图片异步加载框架 Android-Universal-Image-Loader