Glide使用详解

作者: liuye099 | 来源:发表于2019-11-21 10:29 被阅读0次

Gradle配置:

     compile'com.github.bumptech.glide:glide:4.8.0'
     annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'

添加访问网络权限

    <uses-permission android:name="android.permission.INTERNET"/>

    //它可以监听用户的连接状态并在用户重新连接到网络时重启之前失败的请求
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    //用于硬盘缓存和读取
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

加载图片到ImageView

Glide支持网络资源、assets资源、Resources资源、File资源、Uri资源、字节数组, 支持静态图片和动态图片;

    Glide.with(Context context).load(Strint url).into(ImageView imageView);

    // 加载本地图片
    Filefile=newFile(getExternalCacheDir()+"/image.jpg");
    Glide.with(this).load(file).into(imageView);

    // 加载应用资源
    int resource=R.drawable.image;
    Glide.with(this).load(resource).into(imageView);

    // 加载二进制流
    byte[] image=getImageBytes();
    Glide.with(this).load(image).into(imageView);

    // 加载Uri对象
    Uri imageUri=getImageUri();
    Glide.with(this).load(imageUri).into(imageView);

    //如果加载静态gif图片,在界面上显示第一帧的图片:
    Glide.with(this).load(imageUrl).asBitmap().into(imageView);

    //加载动态gif图片
    Glide.with(this).load(imageUrl).asGif().into(imageView);

RequestOptions

我们可以通过结合设置RequestOptions来对图片进行处理,比如缓存的设置,图片大小,图片裁剪等;

Glide设置属性总结

    RequestOptions options = new RequestOptions()
                    .placeholder(R.mipmap.loading)                //加载成功之前占位图
                    .error(R.mipmap.loading)                    //加载错误之后的错误图
                    .override(400,400)                                //指定图片的尺寸
                    //指定图片的缩放类型为fitCenter (等比例缩放图片,宽或者是高等于ImageView的宽或者是高。)
                    .fitCenter()
                    //指定图片的缩放类型为centerCrop (等比例缩放图片,直到图片的狂高都大于等于ImageView的宽度,然后截取中间的显示。)
                    .centerCrop()
                    .circleCrop()//指定图片的缩放类型为centerCrop (圆形)
                    .skipMemoryCache(true)                            //跳过内存缓存
                    .diskCacheStrategy(DiskCacheStrategy.ALL)        //缓存所有版本的图像
                    .diskCacheStrategy(DiskCacheStrategy.NONE)        //跳过磁盘缓存
                    .diskCacheStrategy(DiskCacheStrategy.DATA)        //只缓存原来分辨率的图片
                    .diskCacheStrategy(DiskCacheStrategy.RESOURCE)    //只缓存最终的图片
                     .dontTransform()  //禁用图形变换功能,这个方法时全局的,导致其他地方的图片也不可进行图形变换了,慎用.
                    .dontAnimate();//跳过动画

     Glide.with(this)
                    .load(url)
                    .asBitmap()//只加载静态图片,如果是git图片则只加载第一帧。
                    .asGif()//加载动态图片,若现有图片为非gif图片,则直接加载错误占位图。
                    .apply(bitmapTransform(newCropCircleTransformation())) //加载圆形图
                    .apply(bitmapTransform(new BlurTransformation( 25, 4))) //模糊过滤,//第二个参数radius取值1-25,值越大图片越模糊
                    .apply(options)
                    .thumbnail(0.1f) //先加载缩略图
                     .crossFade() //淡入淡出效果, 此属性在4.8.0上不适用
                    .into(imageView);
       // 另外可以用into对图片对象进行特殊处理
       .into(new SimpleTarget<Drawable>(){
           @Override
           public void onResouceReady(Drawable resource, Transition<? super Drawable> transition) {
               if(resource instanceof BitmapDrawable) {
                   Bitmap bitmap = ((BitmapDrawable)resource).getBitmap();
                   if (bitmap == null || bitmap.isRecycled()) return;
                   CachedImageManager.getInstance(mContext).cacheImage(iv_detail, bitmap);
                   iv_detail.setImageDrawable(resource);
               }
           }
       });

自定义GlideModule

我们也可以通过配置GlideModule来修改 Glide 的一些初始化配置。
比如:Glide 默认使用低质量的 RGB565, 你可以使用 Glide module 方法去改变解码规则
GlideModule工具类:

public class GlideModuleUtil implements GlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
      //..............

      //改变解码规则
      builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
    }

    @Override
    public void registerComponents(Context context, Glide glide,Registry registry) {
        //............
    }
}

GlideBuilder 中可用的方法:

// 设置内存缓存,需要实现MemoryCache接口,默认实现是LruResourceCache。
.setMemoryCache(MemoryCache memoryCache)

// 设置Bitmap的缓存池,用来重用Bitmap,需要实现BitmapPool接口,它的默认实现是LruBitmapPool
.setBitmapPool(BitmapPool bitmapPool)

// 设置磁盘缓存,需要实现DiskCache.Factory,默认实现是InternalCacheDiskCacheFactory
.setDiskCache(DiskCache.Factory diskCacheFactory)

// 读取磁盘缓存的服务
.setDiskCacheService(ExecutorService service)
.setResizeService(ExecutorService service)

// 用于控制Bitmap解码的清晰度,DecodeFormat可选的值有PREFER_ARGB_8888/PREFER_RGB_565,默认为PREFER_RGB_565
.setDecodeFormat(DecodeFormat decodeFormat)

使用该类时,需要在AndroidManifest.xml中进行配置:

<meta-data
    android:name="com.example.demo.utils.GlideModuleUtil"
    android:value="GlideModule"/>

清理缓存

//清理磁盘缓存 需要在子线程中执行
Glide.get(this).clearDiskCache();

//清理内存缓存  可以在UI主线程中进
Glide.get(this).clearMemory();

相关文章

  • Glide

    4.0.0 Glide 4.0.0 RC0 使用详解 设置cookie

  • Glide使用详解

    引入 以androidStudio为例,在build.gradle中添加依赖: AndroidManifest.x...

  • Glide使用详解

    一、Glide简介 Glide 是 Google 员工的开源项目, Google I/O上被推荐使用,一个高效、...

  • Glide使用详解

    Gradle配置: 添加访问网络权限 加载图片到ImageView Glide支持网络资源、assets资源、Re...

  • Glide使用详解

    Gradle配置: compile'com.github.bumptech.glide:glide:4.8.0'a...

  • Glide图片缓存

    Glide工程依赖 Glide使用需要Support Library v4依赖支持 Glide基本使用 Glide...

  • Glide图片加载使用详解

    1.添加网络请求权限 2.添加依赖 注:如果是Eclipse使用去下载Glide的jar在项目中使用就可以了,ja...

  • Google推荐——Glide使用详解

    零、前言 本文所使用的Glide版本为3.7.0 「推荐」设计模式系列设计模式(零)- 面向对象的六大原则设计模式...

  • Android Glide使用的详解

    1、在build.gradle中添加依赖: compile 'com.github.bumptech.glide...

  • Glide(图片加载)

    Glide Glide使用文档 Glide 系列教程 玩转Glide的Target对象 Glide-内存缓存与磁盘...

网友评论

    本文标题:Glide使用详解

    本文链接:https://www.haomeiwen.com/subject/edezictx.html