Android图片加载框架Coil的详细使用总结


简介 coil 是一个 android 图片加载库,通过 kotlin 协程的方式加载图片 。特点如下:

  • 更快: coil 在性能上有很多优化,包括内存缓存和磁盘缓存,把缩略图存保存在内存中,循环利用 bitmap,自动暂停和取消图片网络请求等 。
  • 更轻量级: coil 只有2000个方法(前提是你的 app 里面集成了 okhttp 和 coroutines),coil 和 picasso 的方法数差不多,相比 glide 和 fresco 要轻量很多 。
  • 更容易使用: coil 的 api 充分利用了 kotlin 语言的新特性,简化和减少了很多样板代码 。
  • 更流行: coil 首选 kotlin 语言开发并且使用包含 coroutines, okhttp, okio 和 androidx lifecycles 在内最流行的开源库 。
    coil 名字的由来:取 coroutine image loader 首字母得来 。
github:https://github.com/coil-kt/coil
文档:https://coil-kt.github.io/coil/image_loaders/
添加依赖:
implementation("io.coil-kt:coil:1.4.0")
简单使用// urlimageview.load("https://www.example.com/image.jpg")// resourceimageview.load(r.drawable.image)// fileimageview.load(file("/path/to/image.jpg"))// and more...可以使用 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)}效果图:

圆形 布局文件
<imageviewandroid: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/
创建 gif imageloader 实例
val imageloader = 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")})}
取消下载val imageurl = "https://t7.baidu.com/it/u=433422559,1779762296&fm=193&f=gif"val disposable = mbinding.image1.load(imageurl)//取消加载disposable.dispose()
替换 okhttp 实例 coil 底层是使用 okhttp 作为网络请求工具,可以设置 okhttpclient 实例
val okhttpclient = okhttpclient.builder().cache(coilutils.createdefaultcache(this)).build()val imageloader = imageloader.builder(this).okhttpclient {okhttpclient}.build()coil.setimageloader(imageloader)
自定义val okhttpclient = okhttpclient.builder().cache(coilutils.createdefaultcache(this)).build()val imageloader = 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 , 则禁用内存缓存 。
默认行为:
【Android图片加载框架Coil的详细使用总结】memorycachepolicy 内存缓存策略,有4中策略,默认为 cachepolicy.enabled
diskcachepolicy 磁盘缓存策略,方式和内存策略一直
crossfade 开启淡入淡出
coil 源码分析 coil 是一个单例类

总结 到此这篇关于android图片加载框架coil详细使用的文章就介绍到这了,更多相关android图片加载框架coil内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
-- 展开阅读全文 --

    推荐阅读