当前位置: 首页 > news >正文

Android Coil的简单介绍及使用

前言:

本文是借鉴网上大佬的Coil相关技术文章及结合自己项目中的实际使用情况,对Coil作一个简单介绍。

简介:

Coil是一个Android的图片加载框架库,是通过Kotlin协程的方式加载图片的,相对于Glide、Picasso、Fresco等的较为传统的图片加载库而言,Coil更加轻量、快速、易用的特性得到很多Android开发者的青睐,如果你是纯Kotlin开发的项目,那么推荐你使用Coil。

快速上手使用:
依赖:

首先要添加依赖(同时记得添加相关权限,如:加载网络图片)

implementation("io.coil-kt:coil:2.4.0")// 如下是对 Gif、SVG、视频帧等类型的图片支持库
implementation("io.coil-kt:coil-gif:2.4.0")
implementation("io.coil-kt:coil-svg:2.4.0")
implementation("io.coil-kt:coil-video:2.4.0")
简单使用:

通过ImageView的扩展函数的方式加载图片

//URL 网络图片
imageView.load("https://xxx.xxx.com/image.jpg")
//Resource 资源素材图片
imageView.load(R.mipmap.icon)
//File 文件
imageView.load(File("/path/image.jpg"))
//以及更多方式...
配置其他需求:

淡入淡出,淡入淡出时间,加载中占位图,图片错误占位图,圆形模式,圆角模式等

imageView.load("https://www.网址.com/image.jpg") {crossfade(true) //淡入淡出crossfade(3000)//淡入淡出时间placeholder(R.drawable.default_image) //加载中占位图error(R.drawable.error_image) //加载错误占位图transformations(RoundedCornersTransformation(10f), MaskCoilTransformation()) //圆角,遮罩(自定义见下文代码)
}
 自定义其他需求:

 如果想要配置更多的图片展示模式例如我们通常用到过多的圆形,圆角,以及一些特殊场景用到的高斯模糊、灰色变换、添加水印、遮罩等Coil都可以帮你实现,但是2.4.0+版本以上的好像只提供了CircleCropTransformation(圆形)、RoundedCornersTransformation(圆角)两种,但是也不必着急,因为你可以依照这两种,实现Transformation接口自定义想要的效果


Coil中Transformation接口

下面根据需求写的一个带有遮罩的效果MaskCoilTransformation

import android.graphics.Bitmap
import android.graphics.Bitmap.createBitmap
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter
import androidx.annotation.ColorInt
import coil.decode.DecodeUtils
import coil.size.Scale
import coil.size.Size
import coil.size.pxOrElse
import coil.transform.Transformation
import kotlin.math.roundToInt/*** description 图片蒙层设置*/
class MaskCoilTransformation(@ColorInt private val color: Int = Color.parseColor("#B3E8ECF0")
): Transformation {override val cacheKey: String = "MaskCoilTransformation($color)"override suspend fun transform(input: Bitmap, size: Size): Bitmap {val dstWidth = size.width.pxOrElse { input.width }val dstHeight = size.height.pxOrElse { input.height }val multiplier = DecodeUtils.computeSizeMultiplier(srcWidth = input.width,srcHeight = input.height,dstWidth = dstWidth,dstHeight = dstHeight,scale = Scale.FILL)val outputWidth = (dstWidth / multiplier).roundToInt()val outputHeight = (dstHeight / multiplier).roundToInt()val output = createBitmap(outputWidth, outputHeight, input.config)val canvas = Canvas(output)val paint = Paint()paint.isAntiAlias = truepaint.colorFilter = PorterDuffColorFilter(Color.parseColor("#B3E8ECF0"), PorterDuff.Mode.SRC_ATOP)canvas.drawBitmap(input, 0f, 0f, paint)return output}
}

The End.

相关文章:

  • 电源小白入门学习10——浪涌、防浪涌器件、浪涌保护芯片
  • YOLOv10训练自己的数据集
  • 深度学习Week15——利用TensorFlow实现猫狗识别2
  • 【Elasticsearch】IK分词器的下载及使用
  • AAA认证,授权,计费
  • 【LLM第7篇】transformer跟bert、gpt、大模型的联系
  • Python魔法之旅-魔法方法(14)
  • vue 按钮权限
  • Elastic Connectors:增量同步对性能的影响
  • 指纹考勤系统
  • Apache Pulsar 中文社区有奖问卷调查(2024 上半年度)
  • dnf手游版游玩感悟
  • Linux编程--网络层和
  • 分享几个好用的网站、软件
  • 【Elasticsearch7.11】增加身份认证
  • 分享的文章《人生如棋》
  • 2017-08-04 前端日报
  • Electron入门介绍
  • extract-text-webpack-plugin用法
  • JavaScript DOM 10 - 滚动
  • JS笔记四:作用域、变量(函数)提升
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Just for fun——迅速写完快速排序
  • MySQL几个简单SQL的优化
  • 代理模式
  • 关于for循环的简单归纳
  • 人脸识别最新开发经验demo
  • 说说动画卡顿的解决方案
  • 小程序01:wepy框架整合iview webapp UI
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • zabbix3.2监控linux磁盘IO
  • ​2020 年大前端技术趋势解读
  • ​configparser --- 配置文件解析器​
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​人工智能书单(数学基础篇)
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # linux从入门到精通(三)
  • #nginx配置案例
  • #NOIP 2014#Day.2 T3 解方程
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (8)STL算法之替换
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (done) 两个矩阵 “相似” 是什么意思?
  • (第二周)效能测试
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (离散数学)逻辑连接词
  • (三)mysql_MYSQL(三)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Windows2003安全设置/维护
  • (转)大道至简,职场上做人做事做管理
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(五):遍历指定目录下资源文件并更新