登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

个人小型图片加载框架

来自: MrlLee 分类: Android精品源码 上传时间: 2016-6-22 16:35:22
Tag:小型 图片 加载 框架

项目介绍:

[size=1.75em]1.ImageLoader简易版(LruCache&DiskLruCache)(思路来源:自己)
这个是我自己写的. 这个相比第一个来说就是没有任务队列 只有线程池的的内部队列
LruCache&DiskLruCache
PS:当前这个中,所以的任务进来都只能按照进来的顺序反选,线程池在的线程执行完毕后会自动调用下一个等待的线程
Folder:** App **
[Java] 查看源文件 复制代码
 ImageLoader.getInstance(MainActivity.this)
                    .displayImage(holder.iv, list.get(position), null);

PS:正因为我觉得这个不够好,所以我找到了IMOOC上仿微信的视频,实现了视频上的,再加上我自己原来的,就有了第2个框架. 这个原到TaskQueue队列来控制线程执行的顺序,而不再是原来的线程池执行的顺序.
2.MyImageLoader+TaskQueue版(LruCache&DiskLruCache)(灵感来源:鸿洋视频)
Folder:: ** MyImageLoaderTaskQueue **
源码地址,可直接用的
结构
这里用到LruCache和DiskLruCache一起用了
用法:
[Java] 查看源文件 复制代码
LoaderConfig config;

// this 这里为Context
config = new LoaderConfig(this);

config.setThreadCount(4).setDiskLruCacheSize(100).setLruCacheSize(50).setTaskType(LoaderConfig.TaskType.TYPE_LIFO);

MyImageLoader.getInstance(config).displayImage(imgUrl, ImagerView);

  • setThreadCount():设置线程池一次运行的个数
  • setDiskLruCacheSize(): 磁盘缓存大小
  • setLruCacheSize():内存缓存大小
  • setTaskType():设置任务的顺序模式,有两种模式
    • TYPE_LIFO: 最后进来的任务先执行(栈)
    • TYPE_FIFO: 先进来的任务先执行(队列)
  • setDiskCacheFolder():设置磁盘缓存的路径,可以传入String,File类型的参数

这个会用一个TaskQueue来管理线程,当线程池中有空的时候,就通知TaskQueue去取一个线程 Type.FIFO:先来的线程先执行 Type.LIFO:后来的线程先执行
注意// 在ListView/RecyclerView/GridView 加上这个可以避免图片的加载未完成时错位
[Java] 查看源文件 复制代码
//重点是这句. 重置图片的状态
holder.img.setImageResource(R.mipmap.ic_launcher);

ImageLoader.getInstance(4, ImageLoader.Type.LIFO)
        .loadImage(mDirPath + "/" + mImagPaths.get(position), holder.img);
3.加载本地图片版(LruCache)(Imooc视频源码)
Folder:** ImoocImageLoader **
** Imooc HongYang(鸿洋)上的高仿微信图片选择器 **
游客,如果您要查看本帖隐藏内容请回复

相关源码推荐:

我来说两句
*滑动验证:
所有评论(27)
chenxing1010 2016-6-22 17:31:22
谢谢分享,
回复
chenxing1010 2016-6-22 17:31:35
强烈支持楼主ing……
回复
hadd 2016-6-22 22:51:26
正需要啊,感谢楼主无私分享!
回复
witonstone 2016-6-24 08:57:54
学习学习!
回复
雪洗中关村 2016-6-27 11:26:48
学习学习!
回复
雪洗中关村 2016-6-27 11:26:54
精华内容,楼主V5!
回复
ocesn 2016-6-27 15:57:14
感谢分享,安卓巴士有你更精彩:)
回复
1234下一页
369 0 0
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,769657487

如何获得代码达人称号

如何成为签约作者

联系我们
关闭
合作电话:
13802416937
Email:
[email protected]
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表