Glide的基本使用

本文是在拜读了郭神的Glide系列教程后做的个人笔记,需要学习这方面知识的请点击下方链接。
郭神博客:https://blog.csdn.net/guolin_blog

Glide的with()方法,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片加载也会停止。如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止。

基本使用:Glide.with().load().into();

占位图:在load与into中间加上palceholder(占位的图片资源);

硬盘缓存:diskCacheStrategy();有以下四种可选参数。
DiskCacheStrategy.NONE: 表示不缓存任何内容。
DiskCacheStrategy.SOURCE: 表示只缓存原始图片。
DiskCacheStrategy.RESULT: 表示只缓存转换过后的图片(默认选项)。
DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换过后的图片。

禁用内存缓存:skipMemoryCache(true);

异常占位图:error(),出现异常情况导致目标图片加载不了则显示此图片。

Glide自动识别加载静态图或者gif,asBitmap()可以强制加载静态图;asGif()则是加载动态图,若传入的不是gif,则会加载失败。

Glide是自动识别ImageView的大小,因此基本不用我们人为指定,当然也可以使用override(100,100);这样就不去管ImageView的大小。

预加载 downloadOnly(),preload(),都是替换into的,
不过diskCacheStrategy()最好指定为DiskCacheStrategy.SOURCE。

dontTransform()加载图片时不进行自动转换;

override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)指定成原始尺寸。

transform(…)图片变换操作;
fitCenter()按比例充满屏幕;
centerCrop();对原图中心区域裁剪,配合override可指定比例。

自定义变换:自定义一个类继承BitmapTransformation,在重写的方法里进行具体实现,最终将该类实例传入transform里,不过一般都是引用开源库。
glide-transformations,开源库,已有众多常用的自定义变换,可引入项目直接使用。

Glide.with(this)
.load(url)
.bitmapTransform(new BlurTransformation(this), new GrayscaleTransformation(this))
.into(imageView);

导入后可同时进行多种变化。

自定义模块:
自定义模块类,实现GlideModule接口

@GlideModule   //4.+使用
public class MyGlideModule implements GlideModule {

//硬盘缓存大小500M
public static final int DISK_CACHE_SIZE = 500 * 1024 * 1024;

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
    //将加载的图片缓存到SD卡上
    builder.setDiskCache(new ExternalCacheDiskCacheFactory(context));
    //使用ARGB_8888格式,清晰但开销大
    builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
    }

    @Override
    public void registerComponents(Context context, Glide glide) {
    //替换组件
    }
}

在清单文件里声明(4.+的话在上边添加注解即可,无需在此声明)

<application>
        <meta-data
            android:name="com.example.glidetest.MyGlideModule"
            android:value="GlideModule" />
        ...
    </application>

默认配置

setMemoryCache()
用于配置Glide的内存缓存策略,默认配置是LruResourceCache。

setBitmapPool()
用于配置Glide的Bitmap缓存池,默认配置是LruBitmapPool。

setDiskCache()
用于配置Glide的硬盘缓存策略,默认配置是InternalCacheDiskCacheFactory。

setDiskCacheService()
用于配置Glide读取缓存中图片的异步执行器,默认配置是FifoPriorityThreadPoolExecutor,也就是先入先出原则。

setResizeService()
用于配置Glide读取非缓存中图片的异步执行器,默认配置也是FifoPriorityThreadPoolExecutor。

setDecodeFormat()
用于配置Glide加载图片的解码模式,默认配置是RGB_565。

4.+版本

将之前添加在load与into中间的多种方法,定义了一个类RequestOptions来接收,之后传给apply();
引申的工具类

public class GlideUtil {

public static void load(Context context,String url,ImageView imageView,RequestOptions options){
       
          Glide.with(context)
             
          .load(url)
             
          .apply(options)
             
          .into(imageView);
       }
}

硬盘缓存也发生一点更改

DiskCacheStrategy.NONE: 表示不缓存任何内容。

DiskCacheStrategy.DATA: 表示只缓存原始图片。

DiskCacheStrategy.RESOURCE: 表示只缓存转换过后的图片。

DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换过后的图片。

DiskCacheStrategy.AUTOMATIC: 表示让Glide根据图片资源智能地选择使用哪一种缓存策略(默认选项)。

4.+ 比之前的3.7的不同
asBitmap()这几个方法在4.+上是放在load()之前的,新增了asFile()和asDrawable();
submit()对应3.7的downloadOnly();

listener()方法,郭神的例子

Glide.with(this)
     .load("http://www.guolin.tech/book.png")
     .listener(new RequestListener<Drawable>() {
         @Override
         public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
             return false;
         }

         @Override
         public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
             return false;
         }
     })
     .into(imageView);

4.+新功能 Generated API
把Glide关键字替换成GlideApp关键字,可以使用3.7一样的用法;
还可以自定义API,仍然是郭神的例子

//添加此注解
@GlideExtension
public class MyGlideExtension {

//必须是private
    private MyGlideExtension() {

    }
//自定义方法需有此注解,且需要是静态方法,第一个参数必须是RequestOptions,其他可以自定义
    @GlideOption
    public static void cacheSource(RequestOptions options) {
    //对缓存方式进行封装
        options.diskCacheStrategy(DiskCacheStrategy.DATA);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Glide 是一个 Android 平台上的图片加载库,用于加载本地或网络上的图片。使用 Glide 可以方便地加载图片、GIF 图片、缩略图等,而且还支持图片缓存,可以提高图片加载速度。 以下是 Glide基本使用方法: 1. 添加依赖 在项目的 build.gradle 文件中添加以下依赖: ``` dependencies { implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' } ``` 2. 加载图片 在代码中使用 Glide 加载图片: ``` Glide.with(context) .load("图片 URL 或本地图片路径") .into(imageView); ``` 其中,context 为上下文对象,imageView 为显示图片的 ImageView 控件。 3. 加载 GIF 图片 加载 GIF 图片同样很简单,只需要将图片的 URL 或本地路径传入 load() 方法即可: ``` Glide.with(context) .asGif() .load("GIF 图片 URL 或本地路径") .into(imageView); ``` 4. 加载缩略图 可以使用 Glide 加载缩略图,这样可以提高图片加载速度。以下是加载缩略图的示例代码: ``` Glide.with(context) .load("图片 URL 或本地图片路径") .thumbnail(0.2f) // 加载原图的 20% 作为缩略图 .into(imageView); ``` 5. 图片缓存 Glide 默认会对加载的图片进行缓存,可以使用以下代码设置缓存策略: ``` Glide.with(context) .load("图片 URL 或本地图片路径") .diskCacheStrategy(DiskCacheStrategy.NONE) // 禁用磁盘缓存 .skipMemoryCache(true) // 禁用内存缓存 .into(imageView); ``` 以上就是 Glide基本使用方法,可以根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值