万普插件库

jQuery插件大全与特效教程

Android中图片加载框架----UIL(android图片预览框架)

现阶段有很多非常流行的图片加载框架,比如UIL,Picasso,Glide,Fresco等等,下面就主要介绍一下UIL.

一.首先说一下UIL(Universal-Image-Loader)的缓存处理机制(个人理解),如下图



① UI:请求数据,使用唯一的Key值索引Memory Cache中的Bitmap。

② 内存缓存:缓存搜索,如果能找到Key值对应的Bitmap,则返回数据。否则执行第三步。

③ 硬盘存储:使用唯一Key值对应的文件名,检索SDCard上的文件。

④ 如果有对应文件,使用BitmapFactory.decode*方法,解码Bitmap并返回数据,同时将数据写入缓存。如果没有对应文件,执行第五步。

⑤ 下载图片:启动异步线程,从数据源下载数据(Web)。

⑥ 若下载成功,将数据同时写入硬盘和缓存,并将Bitmap显示在UI中。

二.使用步骤:

1.首先下载jar包,下载地址:

https://github.com/nostra13/Android-Universal-Image-Loader

导入到项目的lib文件夹下,
或者在as中添加依赖
compile '
com.nostra13.universalimageloader:universal-image-loader:1.9.5'

2.导到项目中后需要进行初始化(官方在application中进行),直接上代码:

File cacheDir = StorageUtils.getOwnCacheDirectory(context, "imageloader/Cache");

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)

// max width, max height,即保存的每个缓存文件的最大长宽

.memoryCacheExtraOptions(480, 800)

//线程池内加载的数量

.threadPoolSize(3)

.threadPriority(Thread.NORM_PRIORITY - 2)

.denyCacheImageMultipleSizesInMemory()

//将保存的时候的URI名称用MD5 加密

.diskCacheFileNameGenerator(new Md5FileNameGenerator())

// 你可以通过自己的内存缓存实现

.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))

// 内存缓存的最大值

.memoryCacheSize(2 * 1024 * 1024)

// 50 Mb sd卡(本地)缓存的最大值

.diskCacheSize(50 * 1024 * 1024)

.tasksProcessingOrder(QueueProcessingType.LIFO)

// 自定义缓存路径由,原先的discCache -> diskCache

.diskCache(new UnlimitedDiskCache(cacheDir))

// connectTimeout (5 s), readTimeout (30 s)超时时间

.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000))

.writeDebugLogs() // Remove for release app

.build();

//全局初始化此配置

ImageLoader.getInstance().init(config);

3.在加载图片的代码中进行使用:

ImageLoader imageLoader = ImageLoader.getInstance();//得到单例

DisplayImageOptions options = new DisplayImageOptions.Builder()

.showImageForEmptyUri(R.mipmap.ic_launcher)//占位显示图片

.showImageOnFail(R.mipmap.ic_launcher)//加载失败显示图片

.showImageOnLoading(R.mipmap.ic_launcher)//加载中显示图片

.cacheInMemory(true)//缓存到内存

.cacheOnDisk(true)//缓存到磁盘

.bitmapConfig(Bitmap.Config.RGB_565)

.build();

最关键的一步就是使用 displayImage 方法,将图片显示到相应的UI控件上

imageLoader.displayImage(imgurl,imageview,option);

说明一下:imgurl是图片地址,
imageview是显示图片的控件,
option显示配置,已经在上面配置.

必须注意的是加权限,加权限,加权限!

android.permission.INTERNET

android.permission.WRITE_EXTERNAL_STORAGE

到这里就完成了,运行就可以看效果了!

希望对新手能有所帮助,也希望大神能指点下。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言