Android Glide 的使用(老生常谈,还是XXX)

说到Glide的使用 就得说 Fresco,ImageLoader 和Picasso;

套用老话,ImageLoader 曾经的王者;现在应该应用很多使用的这个图片框架的产品。

Fresco ,faceBook出品,必是精品,说真的Fresco真是挺好得,就是代码体积大,代码入侵性比较强,在选择Glide和Fresco的时候,我一开始是很倾向Fresco的,但是当时的项目并不是从头开始,我尝试的改了部分,唉!真是受不了,然后选择了Glide。

Picasso 没用使用过,看了使用方法,和Glide大体相似,功能不如Glide强大,体积比Glide小。

轮到今天的主角了Glide,先说说用法吧

Glide.with(context).load(url).priority(Priority.LOW)。placeholder(defaultImg).error(defaultImg).into(imageView);

这就是Glide的用法 load()的参数,就是图片地址了,网络图片,本地,Assets等等都可以

加载SD卡的图片  load("file://"+filePath)

加载Assets  load("file:///android_asset/"+fileName)

加载项目资源本地图片 load(ResourceId)

要是你在加载的是一张Gif动画  关键字asGif()

Glide.with(context).load(url).priority(Priority.LOW).asGif().placeholder(defaultImg).error(defaultImg).into(imageView);

placeholder() 的意思是正在加载的占位图

error()的意思加载出错的占位图

priority(Priority.LOW)  是图片质量优先级  有Low,NORMAL,HIGH,IMMEDIATE

大致的用法就是这样

说说遇到的问题吧 (Glide 均为3.7的版本)

1.java.lang.RuntimeException,Unable to destroy activity

大致的意思就是,不能在已经销毁的Activity中使用 就是with(context) 中的context,这就很烦了,百度一下就可以写成context.getApplicationContext(),这样就贯穿整个APP的生命周期不会崩溃了。

2.图片不显示,就是上述的的方法造成的context.getApplicationContext()加载的时候有时候会造成图片不显示 (我的Glide版本3.7),这个错误为解决,有解决的大神,请告知,这种错误,虽然不会造成崩溃,但是不显示图片也不好(有时候出现,有时候有好了,复现几率大),建议在哪些图片使用多的地方,维护好自己context,不要用,getApplicationContext();部分可以用。

3.个人认为Glide对那个圆形,圆角的图片支持不好,就是那个bitmapTransform的的编写,增加写了个圆角,显示看出来明显感觉有一个正方形的框框(圆形也是如此),而且在RecycleView快速滑动时,圆角竟然会变没了,变成普通ImageView的样子。这就很尴尬,(没有解决)

4.Glide 对自定义ImageView 支持不太好,比如:CircleImageView,圆形图片placeholder(defaultImg),就会无效。尴尬!

5.就是当遇到列表滑动时(如:RecycleView,Listview,Scrollview等等),需要自己实现滑动停止加载(Glide.with(context).pauseRequests();),停止滑动时 恢复加载(Glide.with(context).resumeRequests()),这就很烦人了,但遇到一些嵌套布局,比如 Scrollview 嵌套RecycleView ,有可能RecycleView的那个滑动机制就不能使用了,但是SCrollview的滑动貌似只能监听滑动,不能监听停止。今天就写到这了

你可能感兴趣的:(Android Glide 的使用(老生常谈,还是XXX))