起因

最近在做IM相关的项目,需要模仿QQ头像的显示。 参考使用过模仿QQ讨论组头像,也参考过高仿微信群头像,因公司设计的要求,使用的是模仿QQ头像的组件。

但是使用上却有图片闪动的情况,因为在列表滑动时,动态拼接图片造成图片显示延迟与闪烁,并不流畅。最后决定要修改这个问题。

开始

目前项目用的图片加载框架是Glide,他可以注入很多模块,我就去找资料,果然找到关于Module修改的资料,加载网络图片但没URL?不要紧,通过ModelLoader,让Glide直接加载任何奇葩数据源,恩,没错,我就是要用Glide Module加载我的奇葩数据,多个List

过程

原理解析我就不再多写了,查看上面的提供的文章吧,注入Module,接收List的参数,并实现inputstream的下载,然后继续由Glide进行inputstream的缓存,管理,在这里,我就将下载好的图片进行拼接。

结果

项目地址:https://github.com/jiechic/glide-integration

如何使用

很简单。

repositories {  
    maven { 
        url "https://dl.bintray.com/jiechic/maven" 
    } 
}
dependencies {  
    compile 'com.jiechic.library.glide:qqgroupicon-integration:0.1' 
}

接下来,用Glide 加载List即可,简单方便。高效缓存

List<String> list = new ArrayList<>();  
list.add("http://list.image.baidu.com/t/image_category/galleryimg/womenstar/hk/shu_qi.jpg");  
list.add("http://list.image.baidu.com/t/image_category/galleryimg/womenstar/hk/jia_jing_wen.jpg");  
list.add("http://list.image.baidu.com/t/image_category/galleryimg/womenstar/hk/xu_ruo_xuan.jpg");  
list.add("http://list.image.baidu.com/t/image_category/galleryimg/womenstar/hk/guo_shu_yao.jpg");  
list.add("http://list.image.baidu.com/t/image_category/galleryimg/womenstar/hk/li_jia_xin.jpg");  
Glide.with(this).load(list).into(imageView);