简介
作为Glide是谷歌推荐的图片加载库,Glide有着 支持video,Gif,SVG格式,同时有着很好的生命周期管理,支持Volley,OkHttp,更好的内存管理策略等优点。
重用Listview的使用自动处理请求的取消。
正确加载图片到对应的Imageview。
自动减少图片尺寸,可以省时间,省内存。
Glide自己会做异步处理,所以加载的方法卸载UI 线程中。
Glide和Picasso非常相似,Glide加载图片的方法和Picasso如出一辙。各自有各自的优点,使用时候主要是看需求。想知道他们有哪些区别可以看Google推荐的图片加载库Glide介绍
Glide使用总结
1.加载网络图片
imageView = (ImageView) findViewById( R.id.image );
String url = "http://img5.jpg" ;
Glide.with( this ).load( url ).into( imageView ) ;
. Glide.with() 作为生命周期控制,可以有一下参数:
with(Context context). 使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制。
with(Activity activity). 使用Activity作为上下文,Glide的请求会受到Activity生命周期控制。
with(FragmentActivity activity).Glide的请求会受到FragmentActivity生命周期控制。
with(android.app.Fragment fragment).Glide的请求会受到Fragment 生命周期控制。
with(android.support.v4.app.Fragment fragment).Glide的请求会受到Fragment生命周期控制。
load可以接受一下参数:
605655-20160607154427996-1293585156.pnginto很好理解 就是放进指定的ImageView中去。
2.优先级加载设置 priority()
Glide.with( this).load( url2).priority(Priority.LOW ).into( imageView2 ) ;
Glide.with( this).load( url3).priority(Priority.HIGH ).into( imageView3 ) ;
有这几种优先级,Priority.LOW、Priority. NORMAL、 Priority.HIGH、Priority.IMMEDIATE
但是这里的优先级只是在加载的过程中起一个参考作用, 并不决定真正的加载顺序。因为还受网络情况的影响。
3.缩略图的支持
1) 先加载原图的十分之一大小的缩略图,然后再加载原图
Glide.with( thi ).load( url ).thumbnail(0.1f).into( imageview ) ;
2) 用本地的图片作为缩略图,然后再加载原图
DrawableRequestBuilder<Integer> thumbnailRequest = Glide
.with(context)
.load(R.drawable.image_example);
Glide.with(context)
.load(url)
.thumbnail(thumbnailRequest)
.into(view);
4.加载GIF图
Glide.with( this ).load( url ).into( imageView1 ) ;
Glide.with( this ).load( url ).asGif().into( imageView2 ) ;
设置了asGif()后传入的图片必须是Gif不然会报错,如果吧asGif换成asBitmap可则会显示一张静态图。
5.加载本地视频,相当于一张缩略图
imageView = (ImageView) findViewById( R.id.image_video );
String files = Environment.getExternalStorageDirectory().getAbsolutePath() + "/yueyu.mkv" ;
Glide.with( this ).load( files ).into( imageView ) ;
1) 只能加载本地视频,网络视频无法加载。
2) 加载本地视频显示只是视频的第一帧图像,相当于一张缩略图。不能播放视频。
6.加载动画
.crossFade() 淡入淡出 , 也是默认动画
.crossFade( int duration ) 定义淡入淡出的时间间隔
.dontAnimate() 不使用任何动画
7.Glide缓存策略
Glide默认开启磁盘缓存和内存缓存,当然也可以对单张图片进行设置特定的缓存策略。
设置图片不加入到内存缓存
.skipMemoryCache( true )
.diskCacheStrategy( DiskCacheStrategy.NONE )
Glide支持多种磁盘缓存策略:
DiskCacheStrategy.NONE :不缓存图片
DiskCacheStrategy.SOURCE :缓存图片源文件
DiskCacheStrategy.RESULT:缓存修改过的图片
DiskCacheStrategy.ALL:缓存所有的图片,默认
8.图片的缩放
1)使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的Height是match_parent则图片就会被拉伸填充
Glide.with(context).load(imageUrl).centerCrop().into(imageView);
2)使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围,该图像将会完全显示,但可能不会填满整个ImageView。
Glide.with(context).load(imageUrl).fitCenter().into(imageView);
3)使用override(horizontalSize, verticalSize)
与Picasso相比,Glide在内存消耗上更高效、更智能。Glide会根据所剩的内存和ImageView的大小自动限制图片的尺寸。Picasso也有相似的特性,但是它需要手动调用.fit(),对于Glide而言,如果某些图片不应该被自动调整,那么执行override(horizontalSize, verticalSize),那么这个图片会在显示到ImageView之前被调整为需要的尺寸。
Glide.with(context).load(imageUrl).override(600, 200) .into(imageView);
//按照这个像素,调整图片的尺寸,不保持长宽比例
8.占位图placeHolder()方法
Glide.with(context).load(imageUrl)
.placeholder(R.mipmap.ic_launcher).into(imageView);
9.当加载图片失败时,通过该方法设置加载失败后的图片显示
Glide.with(context).load(imageUrl).error(R.mipmap.ic_launcher).into(imageView);
10.Glide.with(context).resumeRequests()和 Glide.with(context).pauseRequests()
当列表在滑动的时候,调用pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。这样是不是会好些呢?
11.Glide.clear()
当你想清除掉所有的图片加载请求时,这个方法可以帮助到你。
12.设置CircleImageVIew可以使用这个ImageView库
参考文章 :Android图片加载框架Glide用法里面有加载圆角图片和圆形图片的方法。
网友评论