关于Glide这些你可能还不知道
Glide
crossFade()
图片的渐隐渐现动画3.6.1以上默认开启
dontAnimate()
关闭动画
glide
支持centerCrop() 和 fitCenter() 两种转换方式。
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
load( Uri.fromFile( new File( filePath ) ) )
支持加载本地视频文件,不支持网络视频加载。
skipMemoryCache( true )
加载不进入缓存,但要注意作用只是不进入内存缓存,但是仍然会使用硬盘缓存。
diskCacheStrategy()
可以通过这个方法改变Glide的硬盘缓存方式。
DiskCacheStrategy.NONE 表示不进行缓存。
DiskCacheStrategy.SOURCE 只缓存网络加载来的图片
DiskCacheStrategy.RESULT 只缓存处理后降低了分辨率的图片。
DiskCacheStrategy.ALL 处理前后全部缓存
Glide加载图片可以指定优先级,通过priority()
总共分为四个等级,从上到下依次递增。
- Priority.LOW
- Priority.NORMAL
- Priority.HIGH
- Priority.IMMEDIATE
Glide支持缩略图,即先从网络加载较小尺寸的图片占位,再等原图加载完成后替换,使用如下
thumbnail( 0.1f )
0.1f表示以原图10%的大小作为缩略图,如果原图的尺寸是10001000px,那么我们加载的预览图大小就是100100px,加载的图片会比imageVie尺寸小,请注意ScaleType。
缩略图也可以使用不同的网络请求
// setup Glide request without the into() method
DrawableRequestBuilder<String> thumbnailRequest = Glide
.with( context )
.load( eatFoodyImages[2] );
// pass the request as a a parameter to the thumbnail request
Glide
.with( context )
.load( UsageExampleGifAndVideos.gifUrl )
.thumbnail( thumbnailRequest )
.into( imageView3 );
当然也可以在缩略图上做一些转换,也可以在缩略图上再增加缩略图。
Gilde可以使用Target获取响应回调,拿到Bitmap,也可以增加尺寸。
private SimpleTarget target = new SimpleTarget<Bitmap>(250,250) {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) {
// do something with the bitmap
// for demonstration purposes, let's just set it to an ImageView
imageView1.setImageBitmap( bitmap );
}
};
private void loadImageSimpleTarget() {
Glide
.with( context ) // could be an issue!
.load( eatFoodyImages[0] )
.asBitmap()
.into( target );
}
Glide可以进行BitMap转换,可供使用的方法有两个,
transform( new BlurTransformation( context ) )
bitmapTransform( new BlurTransformation( context ) )
transform可以传入多个转换,依次进行。
Glide为我们提供了常用的Bitmap转换,我们需要在gradle中添加
compile 'jp.wasabeef:glide-transformations:2.0.0'
如果我们想使用GPU transformation包含其他的一些BitMap转换可以添加
compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.3.0'
具体的使用效果可以参考glide-transformations
基本的转换包含四类:
(1)裁剪
- CropTransformation: 传入的宽高和裁剪类型,裁剪类型包括TOP,CENTER,BOTTOM。
- CropCircleTransformation:将图片裁剪为圆形。
- CropSquareTransformation:将图片裁剪为方形。
- RoundedCornersTransformation:图片裁剪为圆角,具体裁剪哪个角通过CropType控制。
(2)颜色过滤器
- ColorFilterTransformation 通过传入带有透明度的颜色,改变图片的主色调。
- GrayscaleTransformation 将图片变成黑白照片。
(3)模糊
- BlurTransformation 具体的模糊程度根据radius控制
(4)遮罩
- MaskTransformation 根据传入的maskId的图片形状,改变原图的形状。
我们也可以定义自己的Transformation,实现方法请参照以上几种已经实现的转换。
Glide并不强制要求使用自带的网络请求方式,实现ModelLoader,Glide提供了两种网络请求库的实现方式:分别是OkHttp和Volley。
OkHttp 2
// Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
// Glide's OkHttp2 Integration
compile 'com.github.bumptech.glide:okhttp-integration:1.4.0@aar'
compile 'com.squareup.okhttp:okhttp:2.7.5'
Glide会自动将GlideModule合并到你的Android.Manifest,Glide所有的网络请求将通过OkHttp。
Volley
// Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
// Glide's Volley Integration
compile 'com.github.bumptech.glide:volley-integration:1.4.0@aar'
compile 'com.mcxiaoke.volley:library:1.0.8'
Glide使用Volley,注意实现方式只能声明一个。
OkHttp 3
// Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
// Glide's OkHttp3 Integration
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
Glide使用okHttp3。
自定义GlideModule请参考Customize Glide with Modules