欢迎来到天天文库
浏览记录
ID:39464509
大小:58.00 KB
页数:6页
时间:2019-07-03
《Android 平滑图片加载和缓存库 Glide 使用详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android平滑图片加载和缓存库Glide使用详解来源:互联网 时间:2015-8-268:04:09本篇文章主要介绍了"Android平滑图片加载和缓存库Glide使用详解",主要涉及到方面的内容,对于Android开发感兴趣的同学可以参考一下:在图片加载库烂大街的今天,选择一个适合自己使用的图片加载库已经成为了每一个Android开发者的必经之路。现在市面上知名的图片加载库有UIL,Picasso,V...··在图片加载库烂大街的今天,选择一个适合自己使用的图片加载库已经成为了每一个Android开
2、发者的必经之路。现在市面上知名的图片加载库有UIL,Picasso,VolleyImageLoader,Fresco以及我们今天的主角Glide。它们各有千秋,不能评定谁一定比谁好,只能说哪一个更适合你。我的理解下面我来谈一下个人对这些图片加载库的理解,如有错误,还望指教。UniversalImageLoader:一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。Picasso:Square出品,必属精品。和OkHttp搭配起来更配呦!VolleyImageLoader:Google官方出品,可惜不
3、能加载本地图片~Fresco:Facebook出的,天生骄傲!不是一般的强大。Glide:Google推荐的图片加载库,专注于流畅的滚动。更多详情请看stackoverflow上这个问题。初试Glide下面进入今天的主题,相信之前很多同学都看到过这篇介绍Glide的文章,中文版在这里。文中从各个方面介绍和比较了Glide与Picasso,总体来说二者极为相似,有着近乎相同的API的使用风格。但Glide在缓存策略和加载GIF方面略胜一筹。最后作者也极力推荐了这个库。而且据说在Google新出的Photos应用中,
4、到处可见Glide的踪迹。看到这里,你是不是已经迫不及待的想试一试这个库呢?就在你下定决心尝试一记的时候,你又听说Yelp app(据说是美国的大众点评)也在使用这个吊炸天的库。你的心中激动万分,发四一定要使用这个库。说干就干,打开AndroidStudio,在builde.gradle里面添加上compile'com.github.bumptech.glide:glide:3.6.1'然后全局搜索图片加载的地方,全部换成了下面的代码:Glide.with(mContext).load(url).placehol
5、der(R.drawable.loading_spinner).crossFade().into(myImageView);在经过漫长的编译过程之后,再次打开APP,看到有着渐现效果的图片呈现在你的面前,你不禁叫道:“wocao,真TM帅!为什么我以前没有发现呢?”。不过在你使用了几天之后你会发现一些问题:为什么有的图片第一次加载的时候只显示占位图,第二次才显示正常的图片呢?为什么我总会得到类似Youcannotstartaloadforadestroyedactivity这样的异常呢?为什么我不能给加载的图片s
6、etTag()呢?为什么?为什么?这么NB的库竟然会有这么多的问题。没错,这就是我今天要讲的重点。怎么避免上面的问题发生。一些解决方案1.如果你刚好使用了这个圆形Imageview库或者其他的一些自定义的圆形Imageview,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢?方案一:不设置占位;方案二:使用Glide的TransformationAPI自定义圆形Bitmap的转换。这里是一个已有的例子;方案三:使用下面的代码加载图片:Glide.with(mContext).load(url).
7、placeholder(R.drawable.loading_spinner).into(newSimpleTarget(width,height){@OverridepublicvoidonResourceReady(Bitmapbitmap,GlideAnimationanim){//setImageBitmap(bitmap)onCircleImageView}};2.至于第二个问题,请记住一句话:不要再非主线程里面使用Glide加载图片,如果真的使用了,请把context参数换成getAp
8、plicationContext。更多的细节请参考这个issue。3.为什么不能设置Tag,是因为你使用的姿势不对哦。如何为ImageView设置Tag呢?且听我细细道来。方案一:使用setTag(int,object)方法设置tag,具体用法如下:Java代码是酱紫的:Glide.with(context).load(urls.get(i).getUrl()).fitC
此文档下载收益归作者所有