【奇技淫巧】新的图片加载库,安卓移动开发背景换色
2022/3/1 23:26:38
本文主要是介绍【奇技淫巧】新的图片加载库,安卓移动开发背景换色,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 快速:
Coil
进行了很多优化,包括内存和磁盘缓存,对内存中的图像进行采样,重新使用位图,自动暂停/取消请求等等 - 轻量:
Coil
在您的APK中添加了约 2000 种方法(对于已经使用OkHttp
和Coroutines
的应用程序),与Picasso
相当,远少于Glide
和Fresco
- 易用:
Coil
的 API 利用 Kotlin 的特性简化了样板代码 - 现代:
Coil
是Kotlin-first
,使用现代化的库,例如Coroutines
,OkHttp
,Okio
, 以及AndroidX Lifecycles
Coil
是以下名称的缩写:Coroutine Image Loader
Artifacts
Coil
拥有 5 个 artifact 并发布在 mavenCentral()
io.coil-kt:coil
:依赖于io.coil-kt:coil-base
并且包含了Coil
的单例和ImageView.load
的扩展函数io.coil-kt:coil-base
:base 库,不包含Coil
的单例和ImageView.load
的扩展函数,如果使用依赖注入,则可以使用该库io.coil-kt:coil-gif
:引入一系列解码器以支持解码 gifio.coil-kt:coil-svg
:引入一系列解码器以支持 svgio.coil-kt:coil-video
:包括两个 fetchers ,以支持从 Android 支持的任何视频格式中提取和解码帧
// 普通使用引用
implementation “io.coil-kt:coil:0.11.0”
// 使用依赖注入时或者制作基于 coil 的库引用
implementation “io.coil-kt:coil-base:0.11.0”
Java 8
Coil
要求 Java 8,要通过 D8 启用 Java 8 调试,请将以下内容添加到 Gradle 脚本
Gradle (.gradle
)
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = “1.8”
}
}
Gradle Kotlin DSL (.gradle.kts
)
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
tasks.withType {
kotlinOptions {
jvmTarget = “1.8”
}
}
使用
ImageView 扩展函数
io.coil-kt:coil
提供了 类型安全的 ImageView 扩展函数
在 ImageView 中加载图片,只需调用 load 扩展函数
// 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…
上面的请求等价于:
val imageLoader = Coil.imageLoader(context)
val request = LoadRequest.Builder(imageView.context)
.data(“https://www.example.com/image.jpg”)
.target(imageView)
.build()
imageLoader.execute(request)
可选的请求配置可以通过 lambda 来操作
imageView.load(“https://www.example.com/image.jpg”) {
crossfade(true)
placeholder(R.drawable.image)
transformations(CircleCropTransformation())
}
Image Loaders¶
ImageLoader
是执行请求的服务类。 他们处理缓存,数据获取,图像解码,请求管理,bitmap pool,内存管理等。 可以使用 builder 来创建和配置新实例:
val imageLoader = ImageLoader.Builder(context)
.availableMemoryPercentage(0.25)
.crossfade(true)
.build()
imageView.load 使用单例 ImageLoader
执行 LoadRequest
。 可以使用以下方式访问单例 ImageLoader
:
val imageLoader = Coil.imageLoader(context)
(可选)您可以创建自己的ImageLoader实例,并通过依赖项注入将它们注入:
val imageLoader = ImageLoader(context)
当您创建单个 ImageLoader
并在整个应用程序中共享时,Coil
的性能最佳。 这是因为每个 ImageLoader
都有自己的内存缓存,bitmap pool 和网络监听
Requests¶
有两种 Request 类型
LoadRequest
是一个生命周期范围的 request,支持Target
,Transition
等等GetRequest
挂起并返回RequestResult
如果要加载到自定义 target 中,可以执行 LoadRequest
val request = LoadRequest.Builder(context)
.data(“https://www.example.com/image.jpg”)
.target { drawable ->
// Handle the result.
}
.build()
imageLoader.execute(request)
要强制获取图像,请执行GetRequest:
val request = GetRequest.Builder(context)
.data(“https://www.example.com/image.jpg”)
.build()
val drawable = imageLoader.execute(request).drawable
单例
如果您使用的是 io.coil-kt:coil
,您可以使用以下任意方式设置 ImageLoader
的实例
在 Application 中实现 ImageLoaderFactory
(推荐)
class MyApplication : Application(), ImageLoaderFactory {
override fun newImageLoader(): ImageLoader {
return ImageLoader.Builder(context)
.crossfade(true)
.okHttpClient {
OkHttpClient.Builder()
.cache(CoilUtils.createDefaultCache(context))
.build()
}
.build()
}
}
架构师筑基包括哪些内容
我花了将近半个月时间将:深入 Java 泛型.、注解深入浅出、并发编程.、数据传输与序列化、Java 虚拟机原理、反射与类加载、高效 IO、Kotlin项目实战等等Android架构师筑基必备技能整合成了一套系统知识笔记PDF,相信看完这份文档,你将会对这些Android架构师筑基必备技能有着更深入、更系统的理解。
由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的【架构师筑基必备技能】文档领取方式:点赞+关注,然后私信关键词 【666】即可获得免费领取方式!或者 可以查看我的【Github】
注:资料与上面思维导图一起看会更容易学习哦!每个点每个细节分支,都有对应的目录内容与知识点!
%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)】**
注:资料与上面思维导图一起看会更容易学习哦!每个点每个细节分支,都有对应的目录内容与知识点!
[外链图片转存中…(img-8rbk9V5n-1646146041626)]
[外链图片转存中…(img-zztM3Fn6-1646146041627)]
这份资料就包含了所有Android初级架构师所需的所有知识!需要的可以在我的GIthub里面去查看!
这篇关于【奇技淫巧】新的图片加载库,安卓移动开发背景换色的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么修改Kafka的JVM参数?-icode9专业技术文章分享
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?