关于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



本作品由 Tony Zhang 创作,采用 CC BY-NC-SA 3.0 许可协议 进行许可。

Comments