Coil是一个Android图片加载库,通过Kotlin协程的方式加载图片。特点如下:
更快:Coil在性能上有很多优化,包括内存缓存和磁盘缓存,把缩略图存保存在内存中,循环利用bitmap,自动暂停和取消图片网络请求等。更轻量级:Coil只有2000个方法(前提是你的APP里面集成了OkHttp和Coroutines),Coil和Picasso的方法数差不多,相比Glide和Fresco要轻量很多。更容易使用:Coil的API充分利用了Kotlin语言的新特性,简化和减少了很多样板代码。更流行:Coil首选Kotlin语言开发并且使用包含Coroutines,OkHttp,Okio和AndroidXLifecycles在内最流行的开源库。Coil名字的由来:取CoroutineImageLoader首字母得来。
github:https://github.com/coil-kt/coil
文档:https://coil-kt.github.io/coil/image_loaders/
添加依赖:
implementation(“io.coil-kt:coil:1.4.0”)
简单使用
//URL
imageView.load(“https://www.example.com/image.jpg”)
//Resource
imageView.load(R.drawable.image)
//File
imageView.load(File(“/path/to/image.jpg”))
//Andmore…
可以使用lambda语法轻松配置请求选项:
imageView.load(“https://www.example.com/image.jpg”){
crossfade(true)//渐进进出
placeholder(R.drawable.image)//加载中占位图
transformations(CircleCropTransformation())//圆形图
error(R.drawable.image)//加载错误占位图
}
高斯模糊
//正常图片
mBinding.image1.load(imageUrl)
//高斯模糊-轻微模糊
mBinding.image11.load(imageUrl){
transformations(BlurTransformation(this@MainActivity,5f,10f))
scale(Scale.FILL)
}
//高斯模式-严重模糊
mBinding.image12.load(imageUrl){
transformations(BlurTransformation(this@MainActivity,20f,40f))
scale(Scale.FILL)
}
效果图:
圆角
//没有圆角
mBinding.image1.load(imageUrl){
transformations(RoundedCornersTransformation())
scale(Scale.FILL)
}
//圆角一样
mBinding.image11.load(imageUrl){
transformations(RoundedCornersTransformation(20f))
scale(Scale.FILL)
}
//圆角不一样
mBinding.image12.load(imageUrl){
transformations(
RoundedCornersTransformation(
topLeft=20f,
topRight=20f,
bottomLeft=50f,
bottomRight=50f
)
)
scale(Scale.FILL)
}
效果图:
圆形
布局文件
<ImageView
android:id=”@+id/image1″
android:layout_gravity=”center”
android:layout_width=”150dp”
android:layout_height=”150dp”/>
代码:
mBinding.image1.load(imageUrl){
transformations(CircleCropTransformation())
scale(Scale.FILL)
}
效果图:
灰色变换GrayscaleTransformation
简单来说就是把彩色图变成灰色的
mBinding.image1.load(imageUrl){
transformations(GrayscaleTransformation())
}
效果图:
Gif
添加依赖
implementation(“io.coil-kt:coil-gif:1.4.0”)
官方文档:https://coil-kt.github.io/coil/gifs/
创建gifImageLoader实例
valimageLoader=ImageLoader.Builder(context)
.componentRegistry{
if(SDK_INT>=28){
add(ImageDecoderDecoder(context))
}else{
add(GifDecoder())
}
}
.build()
//设置全局唯一实例
Coil.setImageLoader(imageLoader)
加载gif图片:
mBinding.image1.load(gifUrl)
效果图如下:
监听下载过程
mBinding.image1.load(imageUrl){
listener(
onStart={request->
Log.d(“coil-“,”onStart”)
},
onError={request,throwable->
Log.d(“coil-“,”onError”)
},
onCancel={request->
Log.d(“coil-“,”onCancel”)
},
onSuccess={request,metadata->
Log.d(“coil-“,”onSuccess”)
}
)
}
取消下载
valimageUrl=”https://t7.baidu.com/it/u=433422559,1779762296&fm=193&f=GIF”
valdisposable=mBinding.image1.load(imageUrl)
//取消加载
disposable.dispose()
替换okhttp实例
coil底层是使用okhttp作为网络请求工具,可以设置okHttpClient实例
valokHttpClient=OkHttpClient.Builder()
.cache(CoilUtils.createDefaultCache(this))
.build()
valimageLoader=ImageLoader.Builder(this).okHttpClient{
okHttpClient
}.build()
Coil.setImageLoader(imageLoader)
自定义
valokHttpClient=OkHttpClient.Builder()
.cache(CoilUtils.createDefaultCache(this))
.build()
valimageLoader=ImageLoader.Builder(this)
.availableMemoryPercentage(0.2)
.diskCachePolicy(CachePolicy.ENABLED)//磁盘缓策略ENABLED、READ_ONLY、WRITE_ONLY、DISABLED
.crossfade(true)//淡入淡出
.crossfade(1000)//淡入淡出时间
.okHttpClient{//设置okhttpClient实例
okHttpClient
}.build()
Coil.setImageLoader(imageLoader)
availableMemoryPercentage设置用于此ImageLoader的内存缓存和位图池的可用内存百分比,范围:0-1,如果为0,则禁用内存缓存。
默认行为:
memoryCachePolicy内存缓存策略,有4中策略,默认为CachePolicy.ENABLED
diskCachePolicy磁盘缓存策略,方式和内存策略一直
crossfade开启淡入淡出
Coil源码分析
Coil是一个单例类

![图片[1]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731945.webp)
![图片[2]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731948.webp)
![图片[3]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731949.webp)
![图片[4]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731950.webp)
![图片[5]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731956.gif)
![图片[6]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731958.webp)
![图片[7]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731959.webp)
![图片[8]-Android 图片加载框架 Coil 的详细使用总结-日志论坛-频道-三零软件](https://upai.000blog.com/wp-content/uploads/2025/07/2025731960.webp)



没有回复内容