Android Coil总结
文章目录
- Android Coil总结
- 概述
- 添加依赖
- 用法
- 基本用法
- 占位图
- 变形
- 自定义ImageLoader
- 取消加载
- 协程支持
- 缓存
- 清除缓存
- 监听
- 简单封装
Android Coil总结
概述
Coil 是一个用于 Android 的 Kotlin 图像加载库,旨在简化图像加载和显示的过程。它基于 Kotlin 协程,提供了简洁的 API 和高效的性能。
添加依赖
implementation "io.coil-kt:coil:2.4.0"
用法
基本用法
// 加载网络图片
binding.imageView1.load("https://www.wanandroid.com/resources/image/pc/logo.png")// 加载本地资源图片
binding.imageView2.load(R.drawable.logo)// 加载本地路径图片
val file = File(cacheDir.path + "/logo.png")
binding.imageView3.load(file)
占位图
binding.imageView1.load(imgUrl) {crossfade(true) // 淡入淡出placeholder(R.drawable.placeholder) // 加载时占位error(R.drawable.error) // 加载失败占位
}
变形
binding.imageView1.load(imgUrl) {transformations(CircleCropTransformation()) // 圆形
}
binding.imageView2.load(imgUrl) {transformations(RoundedCornersTransformation(16F)) // 圆角
}
自定义ImageLoader
val imageLoader = ImageLoader.Builder(context).crossfade(true).build()
val request = ImageRequest.Builder(context).data(imgUrl).target(binding.imageView1).build()
imageLoader.enqueue(request)
取消加载
val disposable = binding.imageView1.load(imgUrl)
disposable.dispose() // 取消加载
协程支持
Coil 基于 Kotlin 协程,可以协程中使用。
lifecycleScope.launch {val imageLoader = context.imageLoaderval request = ImageRequest.Builder(context).data(imgUrl).build()val drawable = imageLoader.execute(request).drawablebinding.imageView1.setImageDrawable(drawable)
}
缓存
binding.imageView1.load(imgUrl) {diskCachePolicy(CachePolicy.ENABLED) // 启用磁盘缓存memoryCachePolicy(CachePolicy.ENABLED) // 启用内存缓存
}
清除缓存
val imageLoader = context.imageLoader
imageLoader.memoryCache?.clear()
imageLoader.diskCache?.clear()
监听
binding.imageView1.load(imgUrl) {listener(onStart = { Log.e("TAG", "开始") },onSuccess = { request, result -> Log.e("TAG", "成功") },onError = { request, result -> Log.e("TAG", "失败") },onCancel = { Log.e("TAG", "取消") })
}
简单封装
object CoilImageLoader {private lateinit var imageLoader: ImageLoader// 初始化 Coil 的 ImageLoader// 可以在Application中初始化fun init(context: Context) {imageLoader = ImageLoader.Builder(context).crossfade(true) // 启用淡入淡出效果.build()}// 加载网络图片fun loadImage(imageView: ImageView, url: String) {imageView.load(url, imageLoader) {placeholder(R.drawable.placeholder) // 设置占位图error(R.drawable.error) // 设置错误图}}// 加载圆形图片fun loadCircleImage(imageView: ImageView, url: String) {imageView.load(url, imageLoader) {transformations(CircleCropTransformation()) // 圆形裁剪}}// 加载圆角图片fun loadRoundedCornersImage(imageView: ImageView, url: String, radius: Float) {imageView.load(url, imageLoader) {transformations(RoundedCornersTransformation(radius)) // 圆角}}// 清除内存缓存fun clearMemoryCache() {imageLoader.memoryCache?.clear()}// 清除磁盘缓存fun clearDiskCache(context: Context) {imageLoader.diskCache?.clear()}
}
相关文章:
Android Coil总结
文章目录 Android Coil总结概述添加依赖用法基本用法占位图变形自定义ImageLoader取消加载协程支持缓存清除缓存监听 简单封装 Android Coil总结 概述 Coil 是一个用于 Android 的 Kotlin 图像加载库,旨在简化图像加载和显示的过程。它基于 Kotlin 协程࿰…...
《安富莱嵌入式周报》第351期:DIY半导体制造,工业设备抗干扰提升方法,NASA软件开发规范,小型LCD在线UI编辑器,开源USB PD电源,开源锂电池管理
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV16C95YEEZs 《安富莱嵌入式周报》第351期:DIY半导体…...
Redis在人员管理系统中的应用示例
用户会话管理 场景:用户登录后存储会话信息,支持多服务器共享 实现: 用户登录成功后,生成唯一Token(如JWT),作为Redis的Key Value存储用户ID、角色、权限等信息,设置过期时间&…...
The Wedding Juicer POJ - 2227
采取从外层边界,一步一步向内部拓展的策略,具体来说,一开始将最外面一层的点加入队列,并标记这些点的坐标已经被访问 取出队列中高度最低的点,将其弹出,查看其上下左右的点,如果新点没有被访问…...
# 深入理解RNN(一):循环神经网络的核心计算机制
深入理解RNN:循环神经网络的核心计算机制 RNN示意图 引言 在自然语言处理、时间序列预测、语音识别等涉及序列数据的领域,循环神经网络(RNN)一直扮演着核心角色。尽管近年来Transformer等架构逐渐成为主流,RNN的基本原理和思想依然对于理…...
分布式锁—6.Redisson的同步器组件
大纲 1.Redisson的分布式锁简单总结 2.Redisson的Semaphore简介 3.Redisson的Semaphore源码剖析 4.Redisson的CountDownLatch简介 5.Redisson的CountDownLatch源码剖析 1.Redisson的分布式锁简单总结 (1)可重入锁RedissonLock (2)公平锁RedissonFairLock (3)联锁MultiL…...
同步 Fork 仓库的命令
同步 Fork 仓库的命令 要将您 fork 的仓库的 main 分支与原始仓库(fork 源)同步,您可以使用以下命令: 首先,确保您已经添加了原始仓库作为远程仓库(如果尚未添加): git remote add…...
基于PySide6的CATIA零件自动化着色工具开发实践
引言 在汽车及航空制造领域,CATIA作为核心的CAD设计软件,其二次开发能力对提升设计效率具有重要意义。本文介绍一种基于Python的CATIA零件着色工具开发方案,通过PySide6实现GUI交互,结合COM接口操作实现零件着色自动化。该方案成…...
OpenManus 的提示词
OpenManus 的提示词 引言英文提示词的详细内容工具集的详细说明中文翻译的详细内容GitHub 仓库信息背景分析总结 引言 OpenManus 是一个全能 AI 助手,旨在通过多种工具高效地完成用户提出的各种任务,包括编程、信息检索、文件处理和网页浏览等。其系统提…...
Ubuntu-docker安装mysql
只记录执行步骤。 1 手动下载myql镜像(拉去华为云镜像) docker pull swr.cn-east-3.myhuaweicloud.com/library/mysql:latest配置并启动mysql 在opt下创建文件夹 命令:cd /opt/ 命令:mkdir mysql_docker 命令:cd m…...
Electron桌面应用开发:自定义菜单
完成初始应用的创建Electron桌面应用开发:创建应用,随后我们就可以自定义软件的菜单了。菜单可以帮助用户快速找到和执行命令,而不需要记住复杂的快捷键,通过将相关功能组织在一起,用户可以更容易地发现和使用应用程序…...
理解 JavaScript 中的浅拷贝与深拷贝
在 JavaScript 开发中,我们经常需要复制对象或数组。然而,复制的方式不同,可能会导致不同的结果。本文将详细介绍 浅拷贝 和 深拷贝 的概念、区别以及实现方式,帮助你更好地理解和使用它们。 1. 什么是浅拷贝? 定义 …...
【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建
读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 前言Maven Tomcat Web应用程序搭建1、使用Maven构建新项目2、单击项目,连续按两次shift键,输入"添加",选择"添加框架支持"3、选择Java Web程序4、点击&…...
从0到1入门Linux
一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…...
golang 从零单排 (一) 安装环境
1.下载安装 打开网址The Go Programming Language 直接点击下载go1.24.1.windows-amd64.msi 下载完成 直接双击下一步 下一步 安装完成 环境变量自动设置不必配置 2.验证 win r 输入cmd 打开命令行 输入go version...
如何下载和使用Git:初学者指南
🌟 如何下载和使用Git:初学者指南 在当今的软件开发中,Git已经成为不可或缺的版本控制系统。无论你是独立开发者还是团队成员,掌握Git的基本操作都能帮助你更高效地管理代码。今天,我将详细介绍如何下载和使用Git&…...
SQL_语法
1 数据库 1.1 新增 create database [if not exists] 数据库名; 1.2 删除 drop database [if exists] 数据库名; 1.3 查询 (1) 查看所有数据库 show databases; (2) 查看当前数据库下的所有表 show tables; 2 数据表 2.1 新增 (1) 创建表 create table [if not exists…...
基于Python实现的智能旅游推荐系统(Django)
基于Python实现的智能旅游推荐系统(Django) 开发语言:Python 数据库:MySQL所用到的知识:Django框架工具:pycharm、Navicat 系统功能实现 总体设计 系统实现 系统首页模块 统首页页面主要包括首页,旅游资讯,景点信息…...
安孚科技携手政府产业基金、高能时代发力固态电池,开辟南孚电池发展新赛道
安孚科技出手,发力固态电池。 3月7日晚间,安孚科技(603031.SH)发布公告称,公司控股子公司南孚电池拟与南平市绿色产业投资基金有限公司(下称“南平绿色产业基金”)、高能时代(广东横…...
p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳
向 豆包 提问:编写一个 p5.js 脚本,模拟 42 个彩色小球在一个3D大球体内部弹跳。每个小球都应留下一条逐渐消失的轨迹。大球体应缓慢旋转,并显示透明的轮廓线。请确保实现适当的碰撞检测,使小球保持在球体内部。 cd p5-demo copy…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
