第三方库之—Glide的使用

Glide是一款流行的图片加载框架,支持多种加载、缓存策略和图片处理功能。包括with()指定生命周期,load()加载资源,placeholder()和error()设置占位符,transform()进行图片转换,以及设置优先级、监听回调等。此外,Glide还支持自定义缓存、Bitmap Pool和网络库集成。通过Glide Module可以自定义配置,并提供了图片下载和模糊处理等功能。
摘要由CSDN通过智能技术生成

Glide的使用

Glide是我使用最久,也是最喜欢的一款第三方图片加载框架,以前只是使用,也没有做系统性的总结,现在开始重新整理一遍这些优秀的第三方框架。
Glide官方地址:

Glide的相关方法:

  • with:指定了声明周期
  • load():加载资源,String/Uri/File/Integer/URL/byte[]/T,或者 loadFromMediaStore(Uri uri)
  • placeholder(resourceId/drawable): 设置资源加载过程中的占位Drawable。
  • error():load失败时显示的Drawable。
  • override() :调整图片大小
  • centerCrop():图片裁剪,ImageView 可能会完全填充,但图像可能不会完整显示。
  • fitCenter(): 图像裁剪,图像将会完全显示,但可能不会填满整个 ImageView。
  • animate(): 指定加载动画。
  • crossFade()/crossFade(int duration):imageView改变时的动画,version 3.6.1后默认开启300毫秒
  • dontAnimate():移除所有的动画。
  • transform():图片转换。
  • bitmapTransform(): bitmap转换,不可以和(centerCrop() 或 fitCenter())共用。
  • priority(Priority priority):当前线程的优先级,Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL(default),Priority.LOW
  • thumbnail(): 缩略图.
  • listener():异常监听
  • preload(int width, int height): 预加载resource到缓存中(单位为pixel)
  • fallback(Drawable drawable):设置model为空时显示的Drawable。
  • using() :为单个的请求指定一个 model
  • asGif():Gif 检查,如果是图片且加了判断,则会显示error占位图,否则会显示图片
  • asBitmap():bitmap转化,如果是gif,则会显示第一帧
  • .skipMemoryCache(true) 禁止缓存
  • .diskCacheStrategy(DiskCacheStrategy.NONE)禁止磁盘缓存

    Glide 可以以load(File)的形式播放本地视频,但是如果需要播放网络视屏,则要用VideoView


缓存策略

一张图片变化特别快的时候,应该禁止缓存
.skipMemoryCache(true)
即使关闭内存缓存,请求图片将会仍然被存储在设备的磁盘缓存中,如果一张图片变化很快,仍需要禁止磁盘缓存
.diskCacheStrategy(DiskCacheStrategy.NONE)
Glide 缓存了原始图像,全分辨率图像和另外小版本的图像,因此禁用磁盘缓存是用枚举来控制的
DiskCacheStrategy.NONE //什么都不缓存,就像刚讨论的那样
DiskCacheStrategy.SOURCE //仅仅只缓存原来的全分辨率的图像。在我们上面的例子中,将会只有一个 1000x1000 像素的图片
DiskCacheStrategy.RESULT //仅仅缓存最终的图像,即,降低分辨率后的(或者是转换后的)
DiskCacheStrategy.ALL //缓存所有版本的图像(默认行为)

自定义缓存

磁盘缓存,用类DiskLruCacheWrapper来设置目录
builder.setDiskCache(new DiskCache.Factory() {
            @Override
            public DiskCache build() {
            // 自己的缓存目录
                File imgFile = new File(Environment.getExternalStorageDirectory()+"/Android/data/package-name");
                return DiskLruCacheWrapper.get(imgFile,DiskCache.Factory.DEFAULT_DISK_CACHE_SIZE);
            }
        });
内存缓存,用类Memory Cache 来设置大小
MemorySizeCalculator calculator = new MemorySizeCalculator(context); 
builder.setMemoryCache(new LruResourceCache(calculator.getMemoryCacheSize()));

Bitmap Pool

重复使用及销毁策略。设置方法:GlideBuilder.setBitmapPool() 默认采用的是LruBitmapPool,使用了LRU算法。
MemorySizeCalculator calculator = new MemorySizeCalculator(context);
int defaultBitmapPoolSize = calculator.getBitmapPoolSize();
int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize);
builder.setBitmapPool( new LruBitmapPool( customBitmapPoolSize );

Bitmap Format

Bitmap Format用于设置全局缺省首选Bitmap规格,设置方法:GlideBuilder.setDecodeFormat() 默认采用RGB_565(比ARGB_8888节省一半的内存),但不支持透明度。

优先级

会发现优先级高的先 显示出来,即使图片比较大。
//优先加载
    Glide
        .with(context)
        .load(heroImageUrl)
        .priority(Priority.HIGH)
        .into(imageViewHero);
    //后加载
    Glide
        .with(context)
        .load(itemImageUrl)
        .priority(Priority.LOW)
        .into(imageViewItem);
先显示缩略图,后显示原图
 //用原图的1/10作为缩略图
Glide
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值