框架介绍

Coil是Android上的一个全新的图片加载框架,它的全名叫做coroutine image loader,即协程图片加载库。

与传统的图片加载库Glide,Picasso或Fresco等相比。该具有轻量(只有大约1500个方法)、快、易于使用、更现代的API等优势。

它支持GIF和SVG,并且可以执行四个默认转换:模糊,圆形裁剪,灰度和圆角。并且是全用Kotlin编写,如果你是纯Kotlin项目的话,那么这个库应该是你的首选。

这应该是一个很新的一个图片加载库,完全使用kotlin编写,使用了kotlin的协程,图片网络请求方式默认为Okhttp,相比较于我们常用的Picasso,Glide或者Fresco,它有以下几个特点:

  1. 足够快速,它在内存、图片存储、图片的采样、Bitmap重用、暂停\取消下载等细节方面都有很大的优化(相比于上面讲的三大框架);
  2. 足够轻量,只有大概1500个核心方法,当然也是相对于PGF而言的;
  3. 足够新,也足够现代!使用了最新的Koltin协程所编写,充分发挥了CPU的性能,同时也使用了OKHttp、Okio、LifeCycle等比较新式的Android库。

使用

github地址为:https://github.com/coil-kt/coil/

首先需要配置你的AS环境包含Kotlin开发环境,然后添加依赖:

implementation("io.coil-kt:coil:1.1.1")

要将图像加载到ImageView中,请使用加载扩展功能:

// URL
imageView.load("https://www.example.com/image.jpg")// Resource
imageView.load(R.drawable.image)// File
imageView.load(File("/path/to/image.jpg"))// And more...

可以使用可选的配置请求:

imageView.load("https://www.example.com/image.jpg") {crossfade(true)placeholder(R.drawable.image)transformations(CircleCropTransformation())
}

基本变化:

Coil默认提供了四种变换:模糊变换(BlurTransformation)、圆形变换(CircleCropTransformation)、灰度变换(GrayscaleTransformation)和圆角变换(RoundedCornersTransformation):

基础用法:

imageView.load(IMAGE_URL){transformations(GrayscaleTransformation())
}

直接加入变换就可以, 同时可支持多种变换:

多种变换用法:

 imageView.load(IMAGE_URL) {transformations(GrayscaleTransformation(),RoundedCornersTransformation(topLeft = 2f, topRight = 2f,bottomLeft = 40f, bottomRight = 40f))
}

Gif加载

Coil基础包中是不支持Gif加载的,需要添加extend包:

implementation("io.coil-kt:coil-gif:0.9.5")

此时需要更改一下代码的方式,在imageLoader中注册Gif组件:

val gifImageLoader = ImageLoader(this) {componentRegistry {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {add(ImageDecoderDecoder())} else {add(GifDecoder())}}
}

使用本组件之后,ImageView可直接使用:

id_image_gif.load(GIF_IMAGE_URL, gifImageLoader)

加载效果:

SVG加载

Coil也可以进行SVG加载的,同gif一样,也是需要添加extend包的:

implementation("io.coil-kt:coil-svg:0.9.5")

代码如下:

val svgImageLoader = ImageLoader(this){componentRegistry {add(SvgDecoder(this@MainActivity))}}id_image_svg.load(R.drawable.ic_directions_bus_black_24dp, svgImageLoader)

从Glide\Picasso迁移到Coil

基本的用法的扩展为:

// GlideGlide.with(context).load(url).into(imageView)// PicassoPicasso.get().load(url).into(imageView)// CoilimageView.load(url)

图片设置ScaleType的方式:

imageView.scaleType = ImageView.ScaleType.FIT_CENTER// GlideGlide.with(context).load(url).placeholder(placeholder).fitCenter().into(imageView)// PicassoPicasso.get().load(url).placeholder(placeholder).fit().into(imageView)// Coil (autodetects the scale type)imageView.load(url) {placeholder(placeholder)
}

总结:

Coil还很年轻,2019年发布 ,目前(20210905)最新版本为1.3.2,会有一些方法不完善,和不稳定性,但github库再持续更新,并且问题也会及时回复和解答,在Google极力推荐kotlin和协程的情况下,Coil还是很有发展潜力的,可持续关注

图片加载库Coil详解相关推荐

  1. Android 多张2K,4k图片加载压缩的详解

    前言 在Android开发中,会有2k,4k的多张图片加载的功能,怎么样能保证不会OOM呢,只能对图片进行压缩处理,具体功能如下: //获取资源文件的图片public Bitmap decodeSam ...

  2. (原创)详解Glide图片加载库常用方法

    Glide作为安卓开发常用的图片加载库,有许多实用而且强大的功能,那么,今天就来总结一番,这次把比较常见的都写出来,但并不是全部哦. 在介绍之前,先来说说什么是Glide吧: 在泰国举行的谷歌开发者论 ...

  3. Coil - Google推荐的协程图片加载库

    随着Kotlin的转正,Glide不再是最佳选择.看一下Google极力推荐的Coil框架. GitHub:Coilhttps://coil-kt.github.io/coil/ Pangu-Immo ...

  4. 3种Javascript图片预加载的方法详解

    3种Javascript图片预加载的方法详解 预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度. 这对图片画廊及图片占据很大比例 ...

  5. Android 图片加载框架Coil使用总结

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/122040645 本文出自[赵彦军的博客] 文章目录 简介 简单使用 高斯模糊 圆角 ...

  6. Compose-jb图片加载库load-the-image,适用于KMM Compose desktop桌面端(Windows,Linux,MacOs)

    前言 Android平台上有很多优秀的图片加载框架,比如Glide,Picasso,Fresco 而Compose-jetpack上的图片加载框架有Coil 但Compose-jb上却暂时没有图片加载 ...

  7. Android开源框架——图片加载库Glide

    Glide是有google开发的图片加载库,支持图片加载与处理,包括动态图片的加载,以及视频的解码. 开源地址:https://github.com/bumptech/glide build.grad ...

  8. Android踩坑日记:使用Fesco图片加载库在GridView上的卡顿优化

    1,fresco是一个强大的图片加载库 2,fresco设计了一个叫做image pipeline(图片管道)的模块,它负责从从网络,从本地文件系统,从本地资源加载图片,为了最大限度节约资源和cpu时 ...

  9. android 图片加载库 Glide 的使用介绍

    一:简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会 ...

最新文章

  1. 一步步学习 SAP CDS view Text Association 在 SAP Fiori Elements 中的应用
  2. ASP.NET进阶(8):HttpModule和HttpApplication
  3. Java创建一个学生类
  4. Linux下安装zabbix详细介绍
  5. 如何读群晖硬盘_群晖直接读取Windows硬盘-eSATA挂载
  6. 在Chrome、Firefox等高版本浏览器中实现在线编辑、审阅Office文档新方案
  7. 如何下载哔哩哔哩的视频
  8. 汇编:动态画出一棵七彩圣诞树
  9. DFROBOT Mind+ 掌控板 人工智能测温实验
  10. r -括号[ ]和双括号[[ ]]之间的差异
  11. mysql中的强制索引_你如何强制MySQL中的查询使用索引?
  12. 怎么让python播放音频_用Python播放音频
  13. 【计算机毕业设计】二手车交易网站
  14. C# 上传WPS Excel 后台转换成txt,再压缩为ZIP
  15. LCD字体前端实现(最详细)
  16. 新闻小程序4——新闻详情页设计
  17. TrafficMonitor——简洁实用的网速/cpu/内存监控器
  18. python中fig_matplotlib python:fig.figimage和fig.savefig的图形大小
  19. React - redux 使用(由浅入深)
  20. 编写一个函数用于去除字符串中多余的空格,,

热门文章

  1. 地球大气延伸超越月球轨道!探索系外水星球的新希望
  2. 电脑怎么用计算机辅助设计,建筑计算机辅助设计
  3. 【并行计算-CUDA开发】CUDA线程、线程块、线程束、流多处理器、流处理器、网格概念的深入理解
  4. 東京喰種_经典台词中日双语8(很精彩的对白)
  5. 三维数组中以行优先和以列优先处于相同存储位置的判别
  6. 如何防止被路由器限速-如何更改电脑网卡的MAC地址
  7. R plot图片背景设置为透明_R语言实战 牛国庆
  8. Springboot 优雅关闭
  9. w7桌面计算机回收站不见了,win7回收站不见了如何恢复 win7回收站不见了恢复方法...
  10. 别让1%的情绪失控,毁掉你99%的努力