在GridView或者ListView的Adapter中使用Glide加载图片,图片被拉伸问题

来源:互联网 发布:运动仿真软件哪个好 编辑:程序博客网 时间:2024/05/01 12:52

http://www.jianshu.com/p/d8e1710750ce


这个问题来自我的一篇博客为什么图片加载我首先Glide一位网友的评论,我测试了下,还真有,但是要根据图片而定,有些图片一点点的拉伸也看不出来,若原图片有正圆或者正方形的图案偶尔会显示出椭圆或长方形有些明显。

那这个问题的根源是什么呢?为什么显示单张图片没有影响,放在ListView或者GridView中就有问题了,有些百思不得其解,或许跟ViewHolder模式有关吧,但奇怪的是,去其他页面再回来,重新加载一次,又不存在问题。

1、尝试使用其他的加载框架
使用了Volley或者UniversalImageLoader测试,都未出现类似的问题,很奇怪。

2、会不会和Glide本身有关?
加载单张图片是没有问题的,只有在GridView或者ListView的Adapter中使用才有问题。

3、和ViewHolder模式有关?
那又怎么解释再次进去就没问题了,不应该啊!

4、和Glide缓存有关?
第一次进去没有缓存,是从网络获取图片的,再次进去是从缓存读取的,看着有点像,兴奋的测试了下,退出App再进,还是有类似的问题,已经缓存了,怎么还是这问题?

5、放弃Glide,使用其他的框架
Glide内存管理优秀,生命周期联动,支持ViewHolder模式,加载图片还那么流畅,因为这么个小小的问题就换了,不值,还是再想想办法。

6、去百度Google去搜,看看别人有没有解决这问题
百度,一搜一大堆毫不相干的搜索结果,根本找不到想要的,翻墙上Google,还是没找到解决办法,去GitHub上找找别人使用Glide有没有类似的问题,还是没结果,本来想提问的,英文又不咋地,哎……

7、柳暗花明,都是动画惹的祸
之前在写DropDownMenu这个库的时候本来还暗暗自喜比美团还流畅的切换效果时,后来却发现狂点错乱问题,不得不放弃那么好的效果

仔细想想,Glide以加载流畅为主,默认有一个淡出的动画效果,其他的图片加载库是没有的,我的库也是因为动画而错乱,两者皆有动画,或许是动画惹的祸。果不其然,我分别测试了

 Glide.with(parent.getContext()).load(urls.get(position)).into(viewHolder.mImage);

添加dontAnimate()属性

Glide.with(parent.getContext()).load(urls.get(position)).dontAnimate().into(viewHolder.mImage);

去掉动画,拉伸问题解决了,哈哈!!

8、结果分析
动画因为某些因素未执行完全,停止了某一个中间的状态,看到这个拉伸的图片(动画未执行完毕的状态),当然,为什么动画为执行完毕,本人就不得而知了。



文/dongjunkun(简书作者)
原文链接:http://www.jianshu.com/p/d8e1710750ce
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

0 0
原创粉丝点击