文档章节

图片异步加载

小强强强
 小强强强
发布于 2014/11/14 14:56
字数 821
阅读 888
收藏 33

通过使用Universal-Image-Loader实现图片异步加载,现在这个比较主流。

下面是转载地址:https://github.com/nostra13/Android-Universal-Image-Loader

Universal-Image-Loader

在图片加载中,主要用到下面的类(两个类使用其中一个),下面写一下这两个类中主要的一些方法,在正式写项目中不需要把我说的这些方法都用上。

其中一个类是:

DisplayImageOptions

这个类中的主要方法有:

DisplayImageOptions options = new DisplayImageOptions.Builder()
        .showImageOnLoading(R.drawable.ic_stub) // 设置正在加载的图片资源
        .showImageForEmptyUri(R.drawable.ic_empty) // 设置图上资源为空时加载的图片资源
        .showImageOnFail(R.drawable.ic_error) // 设置加载失败的图片资源
        .resetViewBeforeLoading(false)  // 设置图片在下载前是否重置
        .delayBeforeLoading(1000)//设置延时多少时间后开始下载
        .cacheInMemory(false) // 设置下载的资源是否缓存在内存中
        .cacheOnDisk(false) // 设置下载的资源是否缓存在SD卡中
        .preProcessor(...)  // 设置图片加入缓存前,对bitmap进行设置
        .postProcessor(...) // 设置显示前的图片,显示后这个图片一直保留在缓存中
        .extraForDownloader(...) // 设置额外的内容给ImageDownloader
        .considerExifParams(false) // 是否考虑JPEG图像EXIF参数(旋转,翻转)
        .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // 设置图片以何种编码方式显示
        .bitmapConfig(Bitmap.Config.ARGB_8888) // 设置图片的解码类型
        .decodingOptions(...) // 设置图片的解码配置 
                                  例如 android.graphics.BitmapFactory.Options decodingOptions 
        .displayer(new SimpleBitmapDisplayer()) // 设置显示方式(样式或者动画等)
                                例如:RoundedBitmapDisplayer(int roundPixels)设置圆角图片
                                      FakeBitmapDisplayer()这个类什么都没做
                                      RoundedBitmapDisplayer(int radian) 设置为圆角,弧度为多少  
                                      FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间
                                 SimpleBitmapDisplayer()正常显示一张图片
        .handler(new Handler()) // Handler事件
        .build();

另一个类是 

ImageLoaderConfiguration

这个类中的主要方法有:

File cacheDir = StorageUtils.getCacheDirectory(context);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .memoryCacheExtraOptions(maxWidth, maxHeight) // 缓存图片的最大宽度,最大高度,
        .diskCacheExtraOptions(480, 800, null)
        .taskExecutor(...)  //  添加线程池,进行下载,如果进行了这个设置,
                                那么threadPoolSize(int),threadPriority(int),
                                tasksProcessingOrder(QueueProcessingType)将不会起作用
        .taskExecutorForCachedImages(...)// 下载缓存图片
        .threadPoolSize(3) // 设置用于显示图片的线程池大小
        .threadPriority(Thread.NORM_PRIORITY - 1) //  设置线程的优先级
        .tasksProcessingOrder(QueueProcessingType.FIFO) // 设置图片加载和显示队列处理的类型 
                                                        // 默认为QueueProcessingType.FIFO
                                                        // 注:如果设置了taskExecutor或者
                                                          taskExecutorForCachedImages 此设置无效
        .denyCacheImageMultipleSizesInMemory() // 设置是否允许在内存中缓存多个图片大小 
                                                  默认为允许,(同一个图片URL)根据不同大小
                                                  的imageview保存不同大小图片
        .memoryCache(new LruMemoryCache(2 * 1024 * 1024))// 设置内存缓存 
                                                            默认为一个当前应用可用内存的1/8大小的
        .memoryCacheSize(2 * 1024 * 1024)// 设置SD缓存的最大大小 默认为一个当前应用可用内存的1/8
        .memoryCacheSizePercentage(13) // 设置内存缓存最大大小占当前应用可用内存的百分比 
                                          默认为一个当前应用可用内存的1/8
        .diskCache(new UnlimitedDiscCache(cacheDir)) // default
        .diskCacheSize(50 * 1024 * 1024)
        .diskCacheFileCount(100)
        .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
        .imageDownloader(new BaseImageDownloader(context)) // 设置图片下载器
        .imageDecoder(new BaseImageDecoder()) // 设置图片解码器
        .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // 设置默认的图片显示选项
        .writeDebugLogs() // 打印DebugLogs
        .build();

这里有篇详细介绍的文章比较好:

Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)

还有一个应用 Demo的文章:

http://blog.csdn.net/wwj_748/article/details/10079311



本文转载自:https://github.com/nostra13/Android-Universal-Image-Loader

下一篇: 更新SDK方法
小强强强
粉丝 5
博文 25
码字总数 6220
作品 0
海淀
程序员
私信 提问
drawImage()不显示图片

1、问题源码: <p>要使用的图像:</p><img id="tulip" src="/i/eg_tulip.jpg" alt="The Tulip" /> <p>画布:</p><canvas id="myCanvas" width="500" height="300" style="border:1px solid ......

佣兵0926
2015/11/17
0
0
Python异步加载爬虫,护士私密照源源不断,Ajax抓取速度惊人!

利用aiohttp这个库来进行异步协程提速! 如果Python爬虫不仅在代码编写上展现速度,而且在爬取过程中表现出优越感,最好的就是去下载图片吧,而下载图片最好的代表当然是......我就不多说了。...

Python新世界
2018/07/17
0
0
关于UITableView的性能优化

(UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个代理方法的实现,在可见的页面是会重复绘制页面的,所以绝大部分人都会在这里做...

万能的匹诺曹
2016/06/23
12
0
lazy懒加载(延迟加载)UITableView

举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要滑动经过了,图片就开始加载了,这样用户...

humingtao2013
2014/06/18
0
0
cocos2dx-3 addImageAsync陷阱

addImageAsync异步加载 未响应回调前调用unbindImageAsync撤销消息回调 void TextureCache::unbindImageAsync(const std::string& filename) { imageInfoMutex.lock(); if (imageInfoQueue &......

robslove
2015/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
5
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
5
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
7
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部