Glide

  • 依赖 implementation'com.github.bumptech.glide:glide:4.8.0'

1. Glide将缓冲分为连两个模块

①. 内存缓存:防止应用重复将图片读取到内存中

//禁用内存缓存功能

Glide.with(this) .load(url) .skipMemoryCache(true) .into(imageView);

②. 硬盘缓冲:防止应用重复从网络或其他地方下载和读取数据

//调用diskCacheStrategy()方法并传入DiskCacheStrategy.NONE,就可以禁用掉Glide的硬盘缓存功能了
Glide.with(this) .load(url) .diskCacheStrategy(DiskCacheStrategy.NONE) .into(imageView);

2. diskCacheStrategy()方法 的五种参数

DiskCacheStrategy.NONE: 表示不缓存任何内容。
DiskCacheStrategy.DATA: 表示只缓存原始图片。
DiskCacheStrategy.RESOURCE: 表示只缓存转换过后的图片。
DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换过后的图片。 DiskCacheStrategy.AUTOMATIC: 表示让Glide根据图片资源智能地选择使用哪一种缓存策略(默认选项).

3. Glide的使用:

//本地

    //Glide.with(this).load(localUrl).into(iv_img);

//资源

    //Glide.with(this).load(R.mipmap.ic_launcher).into(iv_img);



    RequestOptions requestOptions =new RequestOptions();

//占位符

//(在图片还没有加载出来时 放一张图片)

        //requestOptions.placeholder(R.mipmap.ic_launcher);

//错误占位符(路径错误时 所加载出来的图片)

        requestOptions.error(R.drawable.ic_launcher_background);

//指定图片大小

        //requestOptions.override(100, 100);

//圆形图片

        //requestOptions.circleCrop();

//圆角图片

            RoundedCorners corners =new RoundedCorners(100);

           requestOptions.transform(corners);

//静止任何转换

        //requestOptions.dontTransform();

//内存缓冲

        //requestOptions.skipMemoryCache(false);

//硬盘

        //requestOptions.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);

    Glide.with(this)

            //.asGif()//加载动态图,如果有图片不是GIF,则直接加载占位图

           // .asBitmap()//将动图转换为静图(如果是Gif则只加载第一帧)

            .load(localUrl)

            .apply(requestOptions)

            .into(iv_img);

}

4. 实现下载图片并且展示下载图片

@Override

public void onClick(View v) {

switch (v.getId()) {

    case R.id.btn_bownload:

            download();

        break;

    case R.id.btn_doenload_show:

                //显示下载好的图片

                Glide.with(MainActivity.this)

                .load(file)

                .into(iv_img);

            break;

    }

}

private void download() {

new Thread(new Runnable() {

@Override

        public void run() {

FutureTarget fileFutureTarget = Glide

.with(MainActivity.this)

.load(netUrl)

//下载图片

                    .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);

try {

//下载好图片的路径

                file = fileFutureTarget.get();

Log.e("TAG","路径" +file.getAbsolutePath());

}catch (ExecutionException e) {

e.printStackTrace();

}catch (InterruptedException e) {

e.printStackTrace();

}

}

}).start();

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。