Android Glide

1.引入glide
java 复制代码
implementation 'com.github.bumptech.glide:glide:4.14.2'
// Skip this if you don't want to use integration libraries or configure Glide.
annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2'  //Glide 注解处理器
2.AndroidManifest.xml 中添加需要的权限

如果你计划从 URL 或一个网络连接中加载数据,你需要加INTERNETACCESS_NETWORK_STATE权限到你的AndroidManifest.xml中,要从本地文件夹或DCIM或图库中加载图片,你将需要添加READ_EXTERNAL_STORAGE权限。

java 复制代码
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
3.基本使用

Glide.with([fragment/Context/View])
.load(url)
.into(imageView)

4.Glide占位符

Glide允许用户指定三种不同类型的占位符,分别在三种不同场景使用:
1.placeholder正在请求图片的时候展示的图片,当请求成功完成时,占位符会被请求到的资源替换。
2. error 如果请求失败的时候展示的图片 (如果没有设置,还是展示placeholder的占位符)
3. fallback 如果请求的url/model为 null 的时候展示的图片 (如果没有设置,还是展示placeholder的占位符)

java 复制代码
RequestOptions requestOptions = new RequestOptions()
.placeholder(R.drawable.hold)
.error(R.drawable.error)
.fallback(R.drawable.fallback)
.override(100,100); //override指定加载图片大小


Glide.with([fragment/Context/View])
.load(url)
.apply(requestOptions)
.into(imageView);
5.过渡

Transitions定义 Glide 如何从占位符到新加载的图片,或从缩略图到全尺寸图像过渡。

java 复制代码
Glide.with(context)
.load(URL)
.apply(requestOptions)
.transition(DrawableTransitionOptions.withCrossFade(factory))
.into((ImageView) holder.itemView);

Glide v4 将不会默认应用交叉淡入或任何其他的过渡效果。每个请求必须手动应用过渡。当待加载的图片包含透明像素时,禁用交叉淡入会导致动画完成后占位符在图片后面仍然可见。如果你在加载透明图片时使用了占位符,可以启用交叉淡入

java 复制代码
DrawableCrossFadeFactory factory = new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();

Glide.with(context)
.load(URL)
.apply(requestOptions)
.transition(DrawableTransitionOptions.withCrossFade(factory))
.into((ImageView) holder.itemView);

为了提升性能,请在使用 Glide 向 ListView , GridView, 或 RecyclerView 加载图片时考虑避免使用动画。

6.变换

获取资源并修改它,然后返回被修改后的资源。通常变换操作是用来完成剪裁或对位图应用过滤器。比如对图片进行圆角配置。
Glide.with(this)
.load(URL)
.transform(...)
.into(iv);

  1. CircleCrop :圆角
  2. RoundedCorners : 四个角度统一指定
  3. GranularRoundedCorners :四个角度单独指定
  4. Rotate :旋转
7.Generated API

Generated API 模式的设计出于以下两个目的:
1.集成库可以为 Generated API 扩展自定义选项。
2.在 Application 模块中可将常用的选项组打包成一个选项在 Generated API 中使用

1、添加 Glide 注解处理器的依赖

2.在 Application 模块中包含一个 AppGlideModule 的实现

java 复制代码
@GlideModule
public class MyGlideModule extends AppGlideModule {
}

3.当你第一次添加你的 AppGlideModule 或做了某些类型的修改后,你可能需要重新构建 (rebuild) 你的项目。无论何时,如果你发现 API 没有被 import ,或看起来已经过期,你可以通过以下方法重新构建:1.打开 Build 菜单;2.点击 Rebuild Project。

Glide.with() 替换为 GlideApp.with(),即可使用该 API 去完成加载工作。与 Glide.with() 不同,诸如 fitCenter()placeholder() 等选项在 Builder 中直接可用,并不需要再传入单独的RequestOptions对象。

java 复制代码
GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(R.drawable.placeholder)
   .fitCenter()
   .into(imageView);
8.GlideExtension与GlideOption

定义一个在频繁使用的选项集合。

java 复制代码
@GlideExtension
public class MyAppExtension {
    private MyAppExtension() {
    }

    @GlideOption
    public static BaseRequestOptions<?> defaultImg(BaseRequestOptions<?> options){
        return options
                .placeholder(R.drawable.p1)
                .error(R.drawable.e2)
                .fallback(R.drawable.f3)
                .override(100,100);

    }
}

使用对比:
GlideApp.with().load(). error(R.drawable.error).fallback(R.drawable.fallback)
GlideApp.with().load().defaultImg()
相关说明与资料请参考
Glide v4 : 快速高效的Android图片加载库 (muyangmin.github.io)
Glide v4 : Fast and efficient image loading for Android (bumptech.github.io)
GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling

相关推荐
王家视频教程图书馆10 小时前
android java播放器依赖
android
robotx13 小时前
安卓16屏保中的启用时机,选项不正确
android
JulyYu14 小时前
【Android】第三方库依赖引发的异常情况排查
android·android studio
QING61816 小时前
简单说下Kotlin 作用域函数中 apply 和 also 为什么不能空安全调用?
android·kotlin·android jetpack
城东米粉儿16 小时前
着色器 (Shader) 的基本概念和 GLSL 语法 笔记
android
儿歌八万首18 小时前
Jetpack Compose :封装 MVVM 框架
android·kotlin·compose
2501_9159214318 小时前
iOS App 中 SSL Pinning 场景下代理抓包失效的原因
android·网络协议·ios·小程序·uni-app·iphone·ssl
壮哥_icon18 小时前
Android 系统级 USB 存储检测的工程化实现(抗 ROM、抗广播丢失)
android·android-studio·android系统
Junerver19 小时前
积极拥抱AI,ComposeHooks让你更方便地使用AI
android·前端