使用Universal-Image-Loader加载图片
来源:互联网 发布:墙纸设计软件 编辑:程序博客网 时间:2024/05/20 13:19
在请求图片时,往往会涉及到对图片的二次采样处理,包括图片的大小,显示的样式(圆角,矩形),甚至时缓存处理,相信大家也接触过很多类似的需求,个人感觉Universal-Image-Loader在这方面做的还是比较人性化的,不需要开发者去做过段繁琐的代码操作,简单易用,所以简单封装了一个图片请求的工具类,支持对图片的二次采样大小,以及显示样式,是否启用缓存等操作。
package com.zhuandian.msuic;import android.content.Context;import android.graphics.Bitmap;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.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.assist.FailReason;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;/** * Created by 谢栋 on 2016/12/25. */public class UniversalImageLoader { /** * 通过传入的url下载图片并显示在ImageVIew上 * * @param context 上下文 * @param url 请求图片的url * @param imageView 要显示图片的ImageView控件 */ public static void getImage(Context context, String url, ImageView imageView) { //1.简单得到一张未处理的图片,使用默认的ImageLoaderConfiguration// ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));// ImageLoader.getInstance().displayImage(url,imageView); //2.使用自定义配置的ImageLoaderConfiguration修改图片的显示样式,启用缓存等... //设置图片展示的配置,是否qiy启用缓存,图片显示的样式(圆角,方角) DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true) //启用二级缓存 (检测内存中是否有改图片存在) .cacheOnDisk(true) //启用磁盘缓存 (检测磁盘中是否有改图片存在) .displayer(new RoundedBitmapDisplayer(50)) //设置展示的样式 .build(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)// .memoryCacheSize(5*1024*1024) //设置二级缓存(内存缓存)的指定大小 .memoryCacheSizePercentage(20) //设置内存缓存占有的百分比 .diskCacheFileCount(80) //设置允许缓存的图片数量,当大于指定数量时会删除一部分 .diskCacheSize(5 * 1024 * 1024) //设置磁盘缓存的大小// .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) //设置图片展示的模式(默认不做任何处理) .defaultDisplayImageOptions(options) .build(); ImageLoader.getInstance().init(configuration); //传入自定义的ImageLoaderConfiguration ImageLoader.getInstance().displayImage(url, imageView); ImageLoader.getInstance().displayImage(url, imageView, options, new ImageLoadingListener() { // 设置监听事件 @Override public void onLoadingStarted(String imageUri, View view) { } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { } @Override public void onLoadingCancelled(String imageUri, View view) { } }, new ImageLoadingProgressListener() { //监听进度比 @Override public void onProgressUpdate(String imageUri, View view, int current, int total) { } }); }}
其实Universal-Image-Loader还是比较强大的,主要支持的功能有一下几个方面
- 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
- 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
- 支持图片的内存缓存,文件系统缓存或者SD卡缓存
- 支持图片下载过程的监听
- 根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
- 较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
- 提供在较慢的网络下对图片进行加载
当然我贴上的代码只是简单的用法之一,大家在实际项目开发中可以根据需求自己来定制相应的功能,其他一些用法跟具体细节还是需要大家自己动手去尝试下
0 0
- 使用Android-Universal-Image-Loader加载图片
- 使用Universal-Image-Loader加载图片
- 使用Universal-Image-Loader框架加载图片
- Android图片异步加载之Android-Universal-Image-Loader使用
- Universal-Image-Loader 图片异步加载类库的使用
- Android图片异步加载之Android-Universal-Image-Loader使用
- 如何使用Universal Image Loader加载本地图片
- 异步加载图片框架Android-Universal-Image-Loader的使用
- Android-Universal-Image-Loader图片加载框架使用
- 使用Android-Universal-Image-Loader加载网络图片
- 异步加载网络图片之Universal-Image-Loader的使用
- 图片加载框架Android-Universal-Image-Loader使用及解析
- Android-Universal-Image-Loader图片加载框架使用
- 使用universal-image-loader加载圆形图片的方法
- Universal-Image-Loader(UIL)图片加载框架使用简单介绍
- 开源图片加载库universal-image-loader使用
- 使用Universal-Image-Loader总结的图片加载工具类
- 使用universal-image-loader-1.9.3.jar加载网络图片
- FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具
- ScriptableObject进行序列化
- 感知机
- struts2.5通配符使用异常
- Spring Boot系列教程五:使用properties配置文件实现多环境配置
- 使用Universal-Image-Loader加载图片
- 直接用URLWithString来拼接NSURL有时候得到的NSURL是为nil的
- 树链剖分小结
- Zookeeper核心机制
- 程序员面试金典: 9.9 递归和动态规划 9.8求n分可以由25分,10分,5分,1分的硬币的表示方法
- CS294--深度强化学习
- 看过的书
- Redis集群Codis安装
- 野生程序员这样考PM