解决RecyclerView中使用UIL加载网络图片,在刷新时出现闪烁问题
2015-12-06 14:10
776 查看
对于开源框架universal-image-loader大多数开发者都不会陌生,的确这是一款很不错的图片类框架,值得推荐。github地址是:https://github.com/nostra13/Android,在我之前的博客中有专门推荐GitHub上几款比较实用而且受欢迎的开源项目,OK,链接在此
github android优秀的开源项目、作者推荐。
好的,马上进入主题:在使用listview加载图片的过程中,当你写好你的适配器中并调用imageLoader的displayImage(uri, imageView) 会出现这样的情况:拖动listview会出现图片的闪烁(重复刷新的情况)。很明显,这是很不讨人喜欢的用户体验!
如何解决?
首先要知道问题出在哪边,看看你在adapter中的getView方法吧。
首先你要确保在每次适配器调用getview的时候,你的viewholder 中的imageview不会重复加载图片,什么意思呢?
看代码:
String imagepath = StringUtils.getImageExternalPath(context, imageUri);
holder.itemImage.setScaleType(ScaleType.CENTER_CROP);
if(!imagepath.equals(holder.itemImage.getTag())) {
holder.itemImage.setTag(imagepath);
mImageLoader.displayImage("file://" + imagepath, holder.itemImage, BaseApplication.imageOptions_item, null);
}
如上代码是说,listitem 中的imageview,在界面刷新的过程中,不会重复的去displayImage,这个imageView已经加载过图形了,没必要再去刷新,导致闪烁的现象。而你要做的就是加个判断,我把它(图片路径)保存在imageView的tag中,,每次getView我都会先判断它是否存在,这样就行了。有更好的解决方法的话,请留言!感谢!
github android优秀的开源项目、作者推荐。
好的,马上进入主题:在使用listview加载图片的过程中,当你写好你的适配器中并调用imageLoader的displayImage(uri, imageView) 会出现这样的情况:拖动listview会出现图片的闪烁(重复刷新的情况)。很明显,这是很不讨人喜欢的用户体验!
如何解决?
首先要知道问题出在哪边,看看你在adapter中的getView方法吧。
首先你要确保在每次适配器调用getview的时候,你的viewholder 中的imageview不会重复加载图片,什么意思呢?
看代码:
String imagepath = StringUtils.getImageExternalPath(context, imageUri);
holder.itemImage.setScaleType(ScaleType.CENTER_CROP);
if(!imagepath.equals(holder.itemImage.getTag())) {
holder.itemImage.setTag(imagepath);
mImageLoader.displayImage("file://" + imagepath, holder.itemImage, BaseApplication.imageOptions_item, null);
}
如上代码是说,listitem 中的imageview,在界面刷新的过程中,不会重复的去displayImage,这个imageView已经加载过图形了,没必要再去刷新,导致闪烁的现象。而你要做的就是加个判断,我把它(图片路径)保存在imageView的tag中,,每次getView我都会先判断它是否存在,这样就行了。有更好的解决方法的话,请留言!感谢!
相关文章推荐
- uva 10779 Collectors Problem 网络流
- iOS开发:iOS9.0适配之http修改为https、Bitcode、Scheme白名单等问题
- 一个极其简单的用golang net写的tcpip echoserver
- linux安装nginx并设置https(openssl)
- Android下setLatestEventInfo警告、Handler警告、SimpleDateFormat警告http://www.piaoyi.org/mobile-app/Android-se
- Java网络编程示例
- javaweb学习总结(七)——HttpServletResponse对象(一)
- 【linux】网络编程基础(c语言编程)
- Stanford UFLDL教程 深度网络概览
- Stanford UFLDL教程 从自我学习到深层网络
- 计算机网络_3_应用层
- 网络安全防御全面封阻六种主要网络威胁
- 通过URL和HTTP请求获取网络资源两者有什么区别
- Android如何优雅的缓存网络图片
- TCP/IP详解之:IGMP和DNS
- Android之判断当前网络状态
- iOS开发 网络编程 Socket编程
- RHCE 系列(八):在 Apache 上使用网络安全服务(NSS)实现 HTTPS
- wget
- http登陆时的密码加密