Glide-androdid三方框架

Glide-androdid三方框架

简述

Glide,就像 Picasso,可以从多个源去加载和显示图片,同时也兼顾缓存和在做图片处理的时候维持一个低内存消耗

使用

1.导包

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}

2.基础属性

1.with(Fragment fragment/Context context),很多AndroidAPI调用,Context是必须的。
2.load(String imageUrl),这个ImageUrl就是我们要传的图片地址。
3.into(ImageView imageView),这个就是我们想把URL 加载到哪个ImageView中。

3.load介绍

参数 说明
.load(String string)string可以为一个文件路径、uri或者url
.load(Uri uri)uri类型
.load(File file)文件
.load(Integer resourceId)资源Id,R.drawable.xxx或者R.mipmap.xxx
.load(byte[] model)byte[]类型
.load(T model)自定义类型

4.占位符

加载图片自然少不了占位符:
Glide允许用户指定三种不同类型的占位符,分别在三种不同场景使用:

placeholder(占位符)占位符是当请求正在执行时被展示的 Drawable 。当请求成功完成时,占位符会被请求到的资源替换。
error(错误符)在请求永久性失败时展示。
fallback(后备回调符)在请求的url/model为 null 时展示。

5.其他功能

除了占位符之外,glide还具有一些API来指导功能,比如说请求时的一些配置,图片过度的一些效果,对图片的操作,比如裁剪,变换等。

6.使用举例

public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        ImageView iv1 = findViewById(R.id.iv1);
        ImageView iv2 = findViewById(R.id.iv2);
 
        RequestOptions requestOptions = new RequestOptions()
                .placeholder(R.drawable.placeholder)
                .error(R.drawable.error)
                .fallback(R.drawable.fallback)
                .override(100,100); //override指定加载图片大小
 
        Glide.with(this)
                .load(R.drawable.ceshi)
                .apply(requestOptions)
                .into(iv1);
 
        Glide.with(this)
                .load(R.drawable.ceshi)
                .apply(requestOptions)
                .transform(new CircleCrop(),new Rotate(45))
                .into(iv2);
    }
}

重点:Glide的缓存策略

我们知道,一个高效的图片框架是少不了缓存的,使用缓存可以减少资源的重复加载,提高资源的利用率。在Glide中,缓存分为两大类:内存缓存以及硬盘缓存。具体到缓存类型可以分为4种,一下是官网给出的缓存类型。

活动资源 (Active Resources) (内存)现在是否有另一个 View 正在展示这张图片?
内存缓存 (Memory cache)该图片是否最近被加载过并仍存在于内存中?
资源类型(Resource)该图片是否之前曾被解码、转换并写入过磁盘缓存?
数据来源 (Data)构建这个图片的资源是否之前曾被写入过文件缓存?

看着是不是有点乱,看下面: 当我们加载图片会有以下两种2种方式:

1、是Http/IO ;

2、三级缓存策略

一级缓存:活动缓存 ,可以理解为当前Activity是否持有这个资源,注意这个资源在Activity退出时缓存销毁。

二级缓存:LRU(least recently Used算法)内存缓存 ,注意其在APP应用退出时缓存销毁。

三级缓存:LRU磁盘缓存 ,一直存在吗。

如果还觉得模糊: 我们加载图片时的获取顺序是,首先从活动缓存取,如果没有就再去内存缓存取,如果还没是没有就再去磁盘缓存取,都没有就再去网络下载。

对于缓存,glide默认时开启的,对于缓存的相关配置,是可以配置的。(源码的话占时先搁置一下)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值