新的图片加载库——Coil
Coil 是 Instacart 团队研发的新的的图片加载库,它使用了很多高级功能,例如协程,Okhttp
,androidx.lifecycle
。Coil
还包括一些高级功能,例如图像采样,有效的内存使用以及请求的自动取消/暂停
默认情况下 Coil
与 R8 完全兼容,开箱即用,不需要添加额外的规则。如果使用 Proguard ,您可能需要为 Coroutines, OkHttp 和 Okio 添加规则
Coil 的优势
- 快速:
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 =