• 【Android】浅记图片加载框架 -- Glide


    Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。点击详情介绍--Glide最全解析

    1、在app/build.gradle文件当中添加如下依赖

    1. dependencies {
    2. compile 'com.github.bumptech.glide:glide:3.7.0'
    3. }

     Glide需要用到网络功能,在AndroidManifest.xml中声明一下网络权限

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

    2、加载图片

    1. String url = "http://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg"
    2. Glide.with(this).load(url).into(imageView);

    Glide.with()方法是创建一个加载图片的实例,with()方法可以接收Context、Activity或者Fragment类型的参数,或者直接传this,也可以获取当前应用程序的ApplicationContext。

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

    load()方法指定待加载的图片资源。Glide支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri对象等等。

    1. // 加载本地图片
    2. File file = new File(getExternalCacheDir() + "/image.jpg");
    3. Glide.with(this).load(file).into(imageView);
    4. // 加载应用资源
    5. int resource = R.drawable.image;
    6. Glide.with(this).load(resource).into(imageView);
    7. // 加载二进制流
    8. byte[] image = getImageBytes();
    9. Glide.with(this).load(image).into(imageView);
    10. // 加载Uri对象
    11. Uri imageUri = getImageUri();
    12. Glide.with(this).load(imageUri).into(imageView);

    into()方法让图片显示在哪个ImageView上 

    3、占位图

    加载占位图指在图片的加载过程中,先显示一张临时的图片,等图片加载出来了再替换成要加载的图片。placeholder()

    1. Glide.with(this)
    2. .load(url)
    3. .placeholder(R.drawable.loading)
    4. .into(imageView);

    Glide有非常强大的缓存机制,第一次加载回自动缓存,下次加载的时候将会直接从缓存中读取,不会再去网络下载,因此加载的速度很快,所以在已经自动缓存的情况下,占位图可能来不及显示,如果想显示:可以加diskCacheStrategy()方法,并传入DiskCacheStrategy.NONE参数,这样就可以禁用掉Glide的缓存功能。

    异常占位图就是指,如果因为某些异常情况导致图片加载失败,比如说手机网络信号不好、图片地址不存在,这个时候就显示这张异常占位图error(R.drawable.error)

    1. Glide.with(this)
    2. .load(url)
    3. .placeholder(R.drawable.loading)
    4. .error(R.drawable.error)
    5. .diskCacheStrategy(DiskCacheStrategy.NONE)
    6. .into(imageView);

    4、指定图片格式

    Glide内部支持加载GIF图片,会自动判断图片格式。

    如果指定图片的格式只加载静态图片,可以采用asBitmap()方法

    1. Glide.with(this)
    2. .load(url)
    3. .asBitmap()
    4. .placeholder(R.drawable.loading)
    5. .error(R.drawable.error)
    6. .diskCacheStrategy(DiskCacheStrategy.NONE)
    7. .into(imageView);

    注:调用asBitmap()方法,GIF图片无法播放,只显示第一帧图片

    如果指定图片的格式只加载动态图片,可以采用asGif()方法

    注:调用asGif()方法,静态图片加载失败

  • 相关阅读:
    实战项目【7】MEMS惯性传感器的精度参数和单位换算
    如何重定向注册表
    《最新出炉》系列初窥篇-Python+Playwright自动化测试-34-处理https 安全问题或者非信任站点-下篇
    openEuler安全配置规范基线
    【华为OD机试】分苹果
    微信@all bug复现及原理分析
    使用uniapp开发APP时的调试/安卓打包等
    Wireshark详细使用教程
    ITSS信息话运维
    【JVM详解&JVM优化】JVM垃圾回收机制
  • 原文地址:https://blog.csdn.net/cxy18137478587/article/details/126008294