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

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 协程&#xff0…...

《安富莱嵌入式周报》第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…...

从STM32转战华大HC32F4A0:手把手教你搞定TIM6的PWM输入捕获(附中断配置避坑点)

从STM32到HC32F4A0的PWM输入捕获实战:TIM6配置与中断避坑指南 对于习惯了STM32生态的嵌入式开发者来说,初次接触华大半导体的HC32F4A0系列MCU时,往往会遇到一些意料之外的挑战。PWM输入捕获作为电机控制、频率测量等应用中的核心功能&#xf…...

TCS3490颜色传感器技术解析与应用实践

1. TCS3490颜色传感器技术解析TCS3490是ams公司推出的一款面向移动设备的五通道智能颜色传感器。作为光学传感器领域的创新产品,它通过RGBClearIR的五通道设计,实现了传统三通道传感器无法达到的环境光检测精度。我在实际项目应用中发现,这款…...

《第一大道》铺前路,《凰标》立后世千年文化准则@凤凰标志

任何一场完整的文化复兴,必然包含两个阶段: 先破局开路,再立序定规。 无破局,则无出路;无定规,则无长存。一破 一立破局立规《第一大道》《凰标》武 突围 开荒 破弊文 守正 定调 传世让众生有路可走…...

城通网盘直连解析工具:3分钟告别限速烦恼

城通网盘直连解析工具:3分钟告别限速烦恼 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘那令人抓狂的下载速度而苦恼吗?每次下载大文件都要面对漫长的等待倒计时…...

QMCDecode终极指南:一键解锁QQ音乐加密音频的完整解决方案

QMCDecode终极指南:一键解锁QQ音乐加密音频的完整解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默…...

无线TDoA定位中的硬件偏差问题与DTB校准方法

1. 无线TDoA定位中的硬件偏差问题解析在无线定位领域,时间差到达(Time Difference of Arrival, TDoA)技术因其能够消除接收机时钟偏差而备受青睐。然而,这项技术在实际应用中面临一个关键挑战:节点硬件引入的系统性偏差…...

哔哩下载姬DownKyi:你的B站视频下载与处理终极指南

哔哩下载姬DownKyi:你的B站视频下载与处理终极指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xff…...

Sprout OS:为创意工作者打造的Linux开源操作系统部署与优化指南

1. 项目概述:一个为创意工作者量身定制的操作系统如果你是一名设计师、视频剪辑师、音乐制作人或者任何需要高性能计算和稳定创作环境的创意专业人士,那么你肯定对“创作环境”这四个字又爱又恨。爱的是,它是你挥洒才华的舞台;恨的…...

腾讯会议AI助手使用教程(附避坑指南):新手也能快速上手,高效搞定会议纪要

【前言】最近腾讯会议AI助手彻底火了,身边不少程序员、职场人都在使用,都说“再也不用熬夜整理会议纪要了”。但很多新手第一次使用,会遇到“不知道怎么开启”“转写准确率低”“不会导出总结”等问题。今天就给大家带来一份详细的腾讯会议AI…...

2024必看!AI写教材的实用工具,一键生成20万字教材且低查重!

编写教材难题与AI工具解决方案 编写教材,如何更好地适应多样化需求呢?不同年级学生的认知能力差异显著,内容过于深入或过于浅显都会造成困扰;在课堂教学和自主学习等多种场景中,教材的呈现方式需要灵活调整&#xff1…...