更新日誌
[3.3.0] - 2025 年 7 月 22 日
- 新功能:引入一個新 API,用於限制應用程式在背景執行時 Android 上
MemoryCache.maxSize的大小。- 如果設定了
ImageLoader.Builder.memoryCacheMaxSizePercentWhileInBackground,則ImageLoader的記憶體快取在應用程式於背景執行時將被限制為其最大大小的百分比。此設定目前預設為停用。 - 當應用程式進入背景時,影像將從記憶體快取中被裁剪 (trimmed),以達到受限制的最大大小,但記憶體快取對最近裁剪的影像的弱引用不受影響。這表示如果一個影像目前在其他地方被引用(例如
AsyncImage、ImageView等),它仍將存在於記憶體快取中。 - 這個 API 有助於減少背景記憶體使用量,防止應用程式過早被終止,並有助於減輕使用者設備上的記憶體壓力。
- 如果設定了
- 新功能:為
SvgDecoder增加了Svg.Parser參數。- 這允許在使用預設 SVG 解析器無法滿足需求時,使用自訂的 SVG 解析器。
- 為
SvgDecoder增加了density參數,以支援提供自訂的密度乘數。 - 增加
Uri.Builder以支援複製和修改Uris。 - 增加
ImageLoader.Builder.mainCoroutineContext以支援在測試中覆寫 Coil 對Dispatchers.main.immediate的使用。 - 修正
CrossfadePainter.intrinsicSize在動畫結束時start影像被解除引用時發生變化的問題。這與CrossfadeDrawable的行為一致。 - 修正
ImageLoaders.executeBlocking無法從 Java 存取的問題。 - 在
coil-network-ktor3中使用kotlinx.io的 Okio 互通模組。 - 更新
kotlinx-datetime至0.7.1。- 此版本包含二進制不相容的變更,僅影響
coil-network-cache-control模組。請參閱 此處 以獲取更多資訊。
- 此版本包含二進制不相容的變更,僅影響
- 將 Kotlin 更新至 2.2.0。
- 將 Compose 更新至 1.8.2。
- 將 Okio 更新至 3.15.0。
- 將 Skiko 更新至 0.9.4.2。
[3.2.0] - 2025 年 5 月 13 日
自 3.1.0 以來的變更:
- 重要:由於 Compose
1.8.0的要求,coil-compose和coil-compose-core現在需要 Java 11 位元碼。請參閱 此處 了解如何啟用它。 - 將
AsyncImagePreviewHandler的函式建構子更改為返回AsyncImagePainter.State.Success而不是AsyncImagePainter.State.Loading。 - 修正
ConstraintsSizeResolver#size()中的取消問題。 - 修正使用 R8 建置時缺少
PlatformContext的警告。 - 修正
FakeImageLoaderEngine在返回預設FakeImageLoaderEngine響應時未設定Transition.Factory.NONE的問題。 - 移除
ColorImage上的實驗性註解。 - 在
CacheControlCacheStrategy中延遲解析網路標頭。 - 重構
CircleCropTransformation和RoundedCornersTransformation以共享通用程式碼。 - 如果
ExifOrientationStrategy不是RESPECT_PERFORMANCE,則內部會回退 (fall back) 到使用BitmapFactory。 - 將 Kotlin 更新至 2.1.20。
- 將 Compose 更新至 1.8.0。
- 將 Okio 更新至 3.11.0。
- 將 Skiko 更新至 0.9.4。
- 將 Coroutines 更新至 1.10.2。
- 將
accompanist-drawablepainter更新至 0.37.3。
自 3.2.0-rc02 以來的變更:
- 如果
ExifOrientationStrategy不是RESPECT_PERFORMANCE,則內部會回退到使用BitmapFactory。 - 將 Compose 更新至 1.8.0。
- 將
accompanist-drawablepainter更新至 0.37.3。
[3.2.0-rc02] - 2025 年 4 月 26 日
- 修正在使用
KtorNetworkFetcherFactory(Ktor 3) 載入非 JVM 目標上的影像時,影像請求因ClosedByteChannelException而失敗的問題。
[3.2.0-rc01] - 2025 年 4 月 24 日
- 重要:由於 Compose
1.8.0的要求,coil-compose和coil-compose-core現在需要 Java 11 位元碼。請參閱 此處 了解如何啟用它。 - 將
AsyncImagePreviewHandler的函式建構子更改為返回AsyncImagePainter.State.Success而不是AsyncImagePainter.State.Loading。 - 修正
ConstraintsSizeResolver#size()中的取消問題。 - 修正使用 R8 建置時缺少
PlatformContext的警告。 - 修正
FakeImageLoaderEngine在返回預設FakeImageLoaderEngine響應時未設定Transition.Factory.NONE的問題。 - 移除
ColorImage上的實驗性註解。 - 在
CacheControlCacheStrategy中延遲解析網路標頭。 - 重構
CircleCropTransformation和RoundedCornersTransformation以共享通用程式碼。 - 在
coil-network-ktor2和coil-network-ktor3中使用kotlinx.io的 Okio 互通模組。 - 將 Kotlin 更新至 2.1.20。
- 將 Compose 更新至 1.8.0-rc01。
- 將 Okio 更新至 3.11.0。
- 將 Skiko 更新至 0.9.4。
- 將 Coroutines 更新至 1.10.2。
[3.1.0] - 2025 年 2 月 4 日
- 提升
AsyncImage效能。- 執行時效能提升了 25% 至 40%,具體取決於可組合項 (composable) 是被實例化還是重複使用。記憶體分配 (allocations) 也減少了 35% 至 48%。更多資訊請參閱 此處。
- 增加
ColorImage並棄用FakeImage。ColorImage對於在測試和預覽中返回假值很有用。它解決了與FakeImage相同的用例,但在coil-core中比在coil-test中更容易存取。
- 移除
coil-compose-core對Dispatchers.Main.immediate的依賴。- 這也修正了在 Paparazzi 和 Roborazzi 截圖測試中,
AsyncImagePainter無法同步執行ImageRequest的情況。
- 這也修正了在 Paparazzi 和 Roborazzi 截圖測試中,
- 增加對 資料 URI (data URIs) 的支援,格式為:
data:[<mediatype>][;base64],<data>。 - 增加
AnimatedImageDecoder.ENCODED_LOOP_COUNT以支援在 GIF 的中繼資料中使用編碼的重複計數。 - 為
NetworkRequest增加了Extras以支援自訂擴充。 - 增加
DiskCache.Builder.cleanupCoroutineContext並棄用DiskCache.Builder.cleanupDispatcher。 - 增加
ImageLoader.Builder.imageDecoderEnabled以選擇性停用在 API 29 及以上版本使用android.graphics.ImageDecoder。 - 如果
ImageRequest的資料類型沒有註冊的Keyer,則記錄一個警告。 - 將
CrossfadePainter設為公開。 - 在所有多平台目標上支援
Transformation。 - 在
CacheControlCacheStrategy中支援將 0 作為Expires標頭值。 - 修正
AsyncImage/SubcomposeAsyncImage/rememberAsyncImage在其ContentScale變更為None或從None變更時,不啟動新的ImageRequest的問題。 - 將 Kotlin 更新至 2.1.10。
- 注意:如果您使用 Kotlin native,此版本需要使用 Kotlin 2.1.0 或更高版本編譯,原因是一個 LLVM 更新。
- 將 Compose 更新至 1.7.3。
- 將
androidx.core更新至 1.15.0。
[3.0.4] - 2024 年 11 月 25 日
- 修正向量繪圖 (vector drawables) 未在 Android Studio 預覽中呈現的問題。
- 修正請求大小超過
maxBitmapSize時可能出現的記憶體快取遺失問題。 - 修正
FakeImage未在 Android 上呈現的問題。 - 修正當
AsyncImage/rememberAsyncImagePainter/SubcomposeAsyncImage使用時,請求的Transformation發生變更時,不啟動新的影像請求的問題。 - 修正
ScaleDrawable和CrossfadeDrawable不尊重色調狀態 (tint states) 的問題。 - 允許
ImageDecoder解碼部分影像來源。這與BitmapFactory中的行為一致。 - 修正解碼後未呼叫
Bitmap.prepareToDraw()的問題。 SvgDecoder不應對非點陣圖影像 (non-rasterized images) 返回isSampled = true。- 如果立即主調度器 (immediate main dispatcher) 不可用,則在 Compose 中回退到
Dispatchers.Unconfined。這僅用於預覽/測試環境。 - 將 Ktor 2 更新至
2.3.13。
[3.0.3] - 2024 年 11 月 14 日
- 修正根據
ImageView的ScaleType設定ImageRequest.scale的問題。 - 修正
DiskCache在刪除檔案後不會追蹤條目移除的邊緣情況。 - 在記錄錯誤時,將可拋出物件 (throwable) 傳遞給
Logger。 - 不要將
kotlin-stdlib-jdk7和kotlin-stdlib-jdk8替換為kotlin-stdlib。
[3.0.2] - 2024 年 11 月 9 日
- 修正 Android 上使用自訂
CacheStrategy呼叫OkHttpNetworkFetcherFactory時崩潰的問題。 - 修正
CacheControlCacheStrategy錯誤計算快取條目年齡的問題。 - 修正
ImageRequest.bitmapConfig僅在 API 28 或更高版本上,且為ARGB_8888或HARDWARE時才被尊重的問題。
[3.0.1] - 2024 年 11 月 7 日
- 修正呼叫
Image.toBitmap時,如果使用硬體位圖支援的BitmapImage會崩潰的問題。 - 修正
AsyncImageModelEqualityDelegate.Default對非ImageRequest模型比較相等性時出錯的問題。
[3.0.0] - 2024 年 11 月 4 日
Coil 3.0.0 是 Coil 的下一個主要版本,完整支援 Compose Multiplatform。
自 3.0.0-rc02 以來的變更:
- 移除所有剩餘的棄用方法。
[3.0.0-rc02] - 2024 年 10 月 28 日
有關 3.x 中的所有改進和重要變更,請查閱升級指南。自 3.0.0-rc01 以來的變更:
- 增加
BlackholeDecoder。這簡化了 僅磁碟快取的預載。 - 為
ConstraintsSizeResolver和DrawScopeSizeResolver增加了remember函式。 - 移除
EqualityDelegate作為AsyncImage的參數。相反,它應透過LocalAsyncImageModelEqualityDelegate設定。 - 修正當父級可組合項使用
IntrinsicSize時,AsyncImage不呈現的問題。 - 修正
AsyncImage填充可用約束的問題,當AsyncImagePainter沒有子繪圖器 (child painter) 時。 - 修正
rememberAsyncImagePainter因EqualityDelegate被忽略而導致其狀態被觀察時無限重組的問題。 - 修正解析包含特殊字元的
File/Path路徑的問題。 - 修正
VideoFrameDecoder使用自訂FileSystem實作的問題。 - 將 Ktor 更新至
3.0.0。 - 將
androidx.annotation更新至1.9.0。
[3.0.0-rc01] - 2024 年 10 月 8 日
有關 3.x 中的所有改進和重要變更,請查閱升級指南。自 3.0.0-alpha10 以來的變更:
- 破壞性變更:預設停用
addLastModifiedToFileCacheKey,並允許每個請求單獨設定。可以使用相同的旗標重新啟用此行為。 - 新功能:引入新的
coil-network-cache-controlArtifact,它實現了Cache-Control標頭 支援。 - 新功能:為
SvgDecoder.Factory增加了scaleToDensity屬性。此屬性確保具有固有尺寸的 SVG 會乘以設備的密度(僅在 Android 上支援)。 - 將
ExifOrientationPolicy重命名為ExifOrientationStrategy。 - 在獲取時從
MemoryCache中移除不可共享的影像。 - 將
ConstraintsSizeResolver設為公開。 - 穩定
setSingletonImageLoaderFactory。 - 在
coil-network-ktor3中恢復優化的 JVM I/O 函式。 - 將
pdf加入 MIME 類型列表。 - 將編譯 SDK 更新至 35。
- 將 Kotlin 更新至 2.0.20。
- 將 Okio 更新至 3.9.1。
[3.0.0-alpha10] - 2024 年 8 月 7 日
- 破壞性變更:將
ImageLoader.Builder.networkObserverEnabled替換為NetworkFetcher的ConnectivityChecker介面。- 要停用網路觀察器 (network observer),請將
ConnectivityChecker.ONLINE傳遞給KtorNetworkFetcherFactory/OkHttpNetworkFetcherFactory的建構子。
- 要停用網路觀察器 (network observer),請將
- 新功能:在所有平台上支援載入 Compose Multiplatform 資源。要載入資源,請使用
Res.getUri:
kotlin
AsyncImage(
model = Res.getUri("drawable/image.jpg"),
contentDescription = null,
)- 為
ImageLoader和ImageRequest增加maxBitmapSize屬性。- 此屬性預設為 4096x4096,並為分配的位圖尺寸提供安全的上限。這有助於避免意外地使用
Size.ORIGINAL載入非常大的影像並導致記憶體不足例外。
- 此屬性預設為 4096x4096,並為分配的位圖尺寸提供安全的上限。這有助於避免意外地使用
- 將
ExifOrientationPolicy轉換為一個介面以支援自訂策略。 - 修正
Uri處理 Windows 檔案路徑的問題。 - 從
ImageAPI 中移除@ExperimentalCoilApi。 - 將 Kotlin 更新至 2.0.10。
[3.0.0-alpha09] - 2024 年 7 月 23 日
- 破壞性變更:將
io.coil-kt.coil3:coil-network-ktorArtifact 重命名為io.coil-kt.coil3:coil-network-ktor2,它依賴於 Ktor 2.x。此外,引入io.coil-kt.coil3:coil-network-ktor3,它依賴於 Ktor 3.x。wasmJs支援僅在 Ktor 3.x 中可用。 - 新功能:增加
AsyncImagePainter.restart()以手動重新啟動影像請求。 - 從
NetworkClient和相關類別中移除@ExperimentalCoilApi。 - 優化
ImageRequest以避免不必要的Extras和Map記憶體分配。
[2.7.0] - 2024 年 7 月 17 日
- 輕微優化內部協程 (coroutines) 使用,以提升
ImageLoader.execute、AsyncImage、SubcomposeAsyncImage和rememberAsyncImagePainter的效能。(#2205) - 修正分塊響應 (chunked responses) 的重複網路呼叫問題。(#2363)
- 將 Kotlin 更新至 2.0.0。
- 將 Compose UI 更新至 1.6.8。
- 將 Okio 更新至 3.9.0。
[3.0.0-alpha08] - 2024 年 7 月 8 日
- 破壞性變更:將
ImageRequest和ImageLoader的dispatcher方法重命名為coroutineContext。例如,ImageRequest.Builder.dispatcher現在是ImageRequest.Builder.coroutineContext。此重命名是因為該方法現在接受任何CoroutineContext並且不再需要Dispatcher。 - 修正:修正可能因競態條件 (race condition) 導致的
IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied錯誤。- 注意:這重新引入了對
Dispatchers.Main.immediate的軟依賴。因此,您應該在 JVM 上重新添加對kotlinx-coroutines-swing的依賴。如果未匯入,則ImageRequest將不會立即分派,並且在設定ImageRequest.placeholder或從記憶體快取解析之前會有一幀的延遲。
- 注意:這重新引入了對
[3.0.0-alpha07] - 2024 年 6 月 26 日
- 破壞性變更:
AsyncImagePainter預設不再等待onDraw,而是使用Size.ORIGINAL。- 這修正了 與 Roborazzi/Paparazzi 的相容性問題,並整體提升了測試的可靠性。
- 要恢復等待
onDraw的行為,請將DrawScopeSizeResolver設定為您的ImageRequest.sizeResolver。
- 破壞性變更:重構多平台
ImageAPI。值得注意的是,asCoilImage已重命名為asImage。 - 破壞性變更:
AsyncImagePainter.state已變更為StateFlow<AsyncImagePainter.State>。使用collectAsState觀察其值。這提升了效能。 - 破壞性變更:
AsyncImagePainter.imageLoader和AsyncImagePainter.request已合併為StateFlow<AsyncImagePainter.Inputs>。使用collectAsState觀察其值。這提升了效能。 - 破壞性變更:移除對
android.resource://example.package.name/drawable/imageURI 的支援,因為它會阻止資源縮小優化。- 如果您仍然需要其功能,可以 手動將
ResourceUriMapper包含到您的元件註冊表 (component registry) 中。
- 如果您仍然需要其功能,可以 手動將
- 新功能:引入
AsyncImagePreviewHandler以支援控制AsyncImagePainter的預覽渲染行為。- 使用
LocalAsyncImagePreviewHandler來覆寫預覽行為。 - 作為此變更和其他
coil-compose改進的一部分,AsyncImagePainter現在預設嘗試執行ImageRequest,而不是預設顯示ImageRequest.placeholder。在預覽環境中,使用網路或檔案的請求預計會失敗,但 Android 資源應該可以運作。
- 使用
- 新功能:支援按幀索引提取視訊影像。(#2183)
- 新功能:支援將
CoroutineContext傳遞給任何CoroutineDispatcher方法。(#2241)。 - 新功能:在 JS 和 WASM JS 上支援弱引用記憶體快取。
- 在 Compose 中不分派到
Dispatchers.Main.immediate。作為副作用,kotlinx-coroutines-swing不再需要在 JVM 上匯入。 - 在 Compose 中不呼叫
async並建立一個一次性對象 (disposable) 以提升效能(感謝 @mlykotom!)。(#2205) - 修正將全域
ImageLoader額外參數傳遞給Options的問題。(#2223) - 修正
crossfade(false)在非 Android 目標上無效的問題。 - 修正 VP8X 特徵旗標位元組偏移 (#2199)。
- 將非 Android 目標上的
SvgDecoder轉換為渲染到位圖,而不是在繪圖時渲染影像。這提升了效能。- 此行為可以使用
SvgDecoder(renderToBitmap)控制。
- 此行為可以使用
- 將
ScaleDrawable從coil-gif移動到coil-core。 - 將 Kotlin 更新至 2.0.0。
- 將 Compose 更新至 1.6.11。
- 將 Okio 更新至 3.9.0。
- 將 Skiko 更新至 0.8.4。
- 有關 3.x 中的所有重要變更,請查閱升級指南。
[3.0.0-alpha06] - 2024 年 2 月 29 日
- 將 Skiko 降級至 0.7.93。
- 有關 3.x 中的所有重要變更,請查閱升級指南。
[3.0.0-alpha05] - 2024 年 2 月 28 日
- 新功能:支援
wasmJs目標。 - 建立
DrawablePainter和DrawableImage,以支援在非 Android 平台上繪製非由Bitmap支援的Image。ImageAPI 仍處於實驗階段,在 Alpha 版本之間可能會有所變更。
- 更新
ContentPainterModifier以實作Modifier.Node。 - 修正:在背景執行緒上延遲註冊元件回呼和網路觀察器。這修正了通常會在主執行緒上發生的緩慢初始化問題。
- 修正:修正
ImageLoader.Builder.placeholder/error/fallback未被ImageRequest使用的問題。 - 將 Compose 更新至 1.6.0。
- 將 Coroutines 更新至 1.8.0。
- 將 Okio 更新至 3.8.0。
- 將 Skiko 更新至 0.7.94。
- 有關 3.x 中的所有重要變更,請查閱升級指南。
[2.6.0] - 2024 年 2 月 23 日
- 將
rememberAsyncImagePainter、AsyncImage和SubcomposeAsyncImage設為 可重新啟動和可跳過。這透過避免重新組合 (recomposition),除非可組合項的其中一個參數發生變更,從而提升了效能。- 為
rememberAsyncImagePainter、AsyncImage和SubcomposeAsyncImage增加了可選的modelEqualityDelegate參數,以控制model是否會觸發重新組合。
- 為
- 更新
ContentPainterModifier以實作Modifier.Node。 - 修正:在背景執行緒上延遲註冊元件回呼和網路觀察器。這修正了通常會在主執行緒上發生的緩慢初始化問題。
- 修正:避免在
rememberAsyncImagePainter、AsyncImage和SubcomposeAsyncImage中,如果ImageRequest.listener或ImageRequest.target發生變更時重新啟動新的影像請求。 - 修正:不要在
AsyncImagePainter中觀察影像請求兩次。 - 將 Kotlin 更新至 1.9.22。
- 將 Compose 更新至 1.6.1。
- 將 Okio 更新至 3.8.0。
- 將
androidx.collection更新至 1.4.0。 - 將
androidx.lifecycle更新至 2.7.0。
[3.0.0-alpha04] - 2024 年 2 月 1 日
- 破壞性變更:從
OkHttpNetworkFetcherFactory和KtorNetworkFetcherFactory的公開 API 中移除Lazy。 - 在
OkHttpNetworkFetcherFactory中公開Call.Factory而非OkHttpClient。 - 將
NetworkResponseBody轉換為包裹ByteString。 - 將 Compose 降級至 1.5.12。
- 有關所有重要變更,請查閱升級指南。
[3.0.0-alpha03] - 2024 年 1 月 20 日
- 破壞性變更:
coil-network已重命名為coil-network-ktor。此外,新增了一個coil-network-okhttpArtifact,它依賴於 OkHttp 且不需要指定 Ktor 引擎。- 根據您匯入的 Artifact,您可以手動使用
KtorNetworkFetcherFactory或OkHttpNetworkFetcherFactory來引用Fetcher.Factory。
- 根據您匯入的 Artifact,您可以手動使用
- 支援在 Apple 平台上載入
NSUrl。 - 為
AsyncImage增加clipToBounds參數。 - 有關所有重要變更,請查閱升級指南。
[3.0.0-alpha02] - 2024 年 1 月 10 日
- 破壞性變更:
coil-gif、coil-network、coil-svg和coil-video的套件已更新,使其所有類別都分別屬於coil.gif、coil.network、coil.svg和coil.video。這有助於避免與其他 Artifact 的類別名稱衝突。 - 破壞性變更:
ImageDecoderDecoder已重命名為AnimatedImageDecoder。 - 新功能:
coil-gif、coil-network、coil-svg和coil-video的元件現在會自動添加到每個ImageLoader的ComponentRegistry中。- 需要說明的是,與
3.0.0-alpha01不同,您不需要手動將NetworkFetcher.Factory()添加到您的ComponentRegistry中。只需匯入io.coil-kt.coil3:coil-network:[version]和 一個 Ktor 引擎 就足以載入網路影像。 - 手動將這些元件添加到
ComponentRegistry也是安全的。任何手動添加的元件優先於自動添加的元件。 - 如果需要,可以使用
ImageLoader.Builder.serviceLoaderEnabled(false)停用此行為。
- 需要說明的是,與
- 新功能:在所有平台上支援
coil-svg。它在 Android 上由 AndroidSVG 提供支援,在非 Android 平台上由 SVGDOM 提供支援。 - Coil 現在內部使用 Android 的
ImageDecoderAPI,這在直接從檔案、資源或內容 URI 解碼時具有效能優勢。 - 修正:多個
coil3.Uri解析修正。 - 有關所有重要變更,請查閱升級指南。
[3.0.0-alpha01] - 2023 年 12 月 30 日
- 新功能:Compose Multiplatform 支援。Coil 現在是一個 Kotlin Multiplatform 函式庫,支援 Android、JVM、iOS、macOS 和 Javascript。
- Coil 的 Maven 座標已更新為
io.coil-kt.coil3,其匯入已更新為coil3。這使得 Coil 3 可以與 Coil 2 並行運行,而不會產生二進制相容性問題。例如,io.coil-kt:coil:[version]現在是io.coil-kt.coil3:coil:[version]。 coil-base和coil-compose-baseArtifact 已分別重命名為coil-core和coil-compose-core,以與 Coroutines、Ktor 和 AndroidX 使用的命名慣例保持一致。- 有關所有重要變更,請查閱升級指南。
[2.5.0] - 2023 年 10 月 30 日
- 新功能:在
coil-video中增加MediaDataSourceFetcher.Factory以支援解碼MediaDataSource實作。(#1795) - 將
SHIFT6m裝置添加到硬體位圖黑名單。(#1812) - 修正:防範繪圖器 (painters) 返回具有一個無界維度 (unbounded dimension) 的尺寸。(#1826)
- 修正:當快取標頭包含非 ASCII 字元時,磁碟快取在
304 Not Modified後載入失敗。(#1839) - 修正:
FakeImageEngine未更新攔截器鏈的請求。(#1905) - 將編譯 SDK 更新至 34。
- 將 Kotlin 更新至 1.9.10。
- 將 Coroutines 更新至 1.7.3。
- 將
accompanist-drawablepainter更新至 0.32.0。 - 將
androidx.annotation更新至 1.7.0。 - 將
androidx.compose.foundation更新至 1.5.4。 - 將
androidx.core更新至 1.12.0。 - 將
androidx.exifinterface:exifinterface更新至 1.3.6。 - 將
androidx.lifecycle更新至 2.6.2。 - 將
com.squareup.okhttp3更新至 4.12.0。 - 將
com.squareup.okio更新至 3.6.0。
[2.4.0] - 2023 年 5 月 21 日
- 將
DiskCache的get/edit重命名為openSnapshot/openEditor。 - 不要在
AsyncImagePainter中自動將ColorDrawable轉換為ColorPainter。 - 使用
@NonRestartableComposable註解簡單的AsyncImage重載。 - 修正:在
ImageSource中惰性呼叫Context.cacheDir。 - 修正:修正發布
coil-bom。 - 修正:修正當硬體位圖停用時,總是將位圖設定為
ARGB_8888的問題。 - 將 Kotlin 更新至 1.8.21。
- 將 Coroutines 更新至 1.7.1。
- 將
accompanist-drawablepainter更新至 0.30.1。 - 將
androidx.compose.foundation更新至 1.4.3。 - 將
androidx.profileinstaller:profileinstaller更新至 1.3.1。 - 將
com.squareup.okhttp3更新至 4.11.0。
[2.3.0] - 2023 年 3 月 25 日
- 新功能:引入一個新的
coil-testArtifact,其中包括FakeImageLoaderEngine。此類別對於硬編碼影像載入器響應非常有用,可確保測試中響應的一致性和同步性(從主執行緒)。請參閱 此處 以獲取更多資訊。 - 新功能:為
coil-base(Coil 的子模組) 和coil-compose-base(Coil-Compose 的子模組) 增加 基準設定檔 (baseline profiles)。- 這提升了 Coil 的運行時效能,並應根據您的應用程式如何使用 Coil 提供 更好的幀時間。
- 修正:修正解析包含編碼資料的
file://URI 的問題。 #1601 - 修正:
DiskCache現在會正確計算其最大大小,如果傳遞給它的目錄不存在。 #1620 - 將
Coil.reset設為公開 API。 #1506 - 啟用 Java 預設方法生成。 #1491
- 將 Kotlin 更新至 1.8.10。
- 將
accompanist-drawablepainter更新至 0.30.0。 - 將
androidx.annotation更新至 1.6.0。 - 將
androidx.appcompat:appcompat-resources更新至 1.6.1。 - 將
androidx.compose.foundation更新至 1.4.0。 - 將
androidx.core更新至 1.9.0。 - 將
androidx.exifinterface:exifinterface更新至 1.3.6。 - 將
androidx.lifecycle更新至 2.6.1。 - 將
okio更新至 3.3.0。
[2.2.2] - 2022 年 10 月 1 日
- 確保影像載入器在註冊其系統回呼之前完全初始化。 #1465
- 在 API 30+ 上,在
VideoFrameDecoder中設定首選位圖設定,以避免條帶。 #1487 - 修正
FileUriMapper中解析包含#的路徑的問題。 #1466 - 修正從磁碟快取讀取非 ascii 標頭響應的問題。 #1468
- 修正解碼資產子資料夾內視訊的問題。 #1489
- 將
androidx.annotation更新至 1.5.0。
[2.2.1] - 2022 年 9 月 8 日
- 修正:
RoundedCornersTransformation現在能正確縮放input位圖。 - 移除對
kotlin-parcelize外掛的依賴。 - 將編譯 SDK 更新至 33。
- 將
androidx.appcompat:appcompat-resources降級至 1.4.2 以解決 #1423。
[2.2.0] - 2022 年 8 月 16 日
- 新功能:在
coil-video中增加ImageRequest.videoFramePercent以支援將視訊幀指定為視訊持續時間的百分比。 - 新功能:增加
ExifOrientationPolicy以配置BitmapFactoryDecoder如何處理 EXIF 方向資料。 - 修正:如果在
RoundedCornersTransformation中傳遞了具有未定義維度的尺寸,則不會拋出例外。 - 修正:將 GIF 的幀延遲讀取為兩個無符號位元組而不是一個有符號位元組。
- 將 Kotlin 更新至 1.7.10。
- 將 Coroutines 更新至 1.6.4。
- 將 Compose 更新至 1.2.1。
- 將 OkHttp 更新至 4.10.0。
- 將 Okio 更新至 3.2.0。
- 將
accompanist-drawablepainter更新至 0.25.1。 - 將
androidx.annotation更新至 1.4.0。 - 將
androidx.appcompat:appcompat-resources更新至 1.5.0。 - 將
androidx.core更新至 1.8.0。
[2.1.0] - 2022 年 5 月 17 日
- 新功能:支援載入
ByteArrays。(#1202) - 新功能:支援使用
ImageRequest.Builder.css為 SVG 設定自訂 CSS 規則。(#1210) - 修正:將
GenericViewTarget的私有方法轉換為受保護的。(#1273) - 將編譯 SDK 更新至 32。(#1268)
[2.0.0] - 2022 年 5 月 10 日
Coil 2.0.0 是函式庫的一個主要迭代版本,包含破壞性變更。請查閱 升級指南 以了解如何升級。
- 新功能:在
coil-compose中引入AsyncImage。請查閱文件以獲取更多資訊。
kotlin
// 顯示來自網路的影像。
AsyncImage(
model = "https://example.com/image.jpg",
contentDescription = null,
)
// 顯示來自網路的影像,帶有預留位置、圓形裁剪和交叉淡入動畫。
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data("https://example.com/image.jpg")
.crossfade(true)
.build(),
placeholder = painterResource(R.drawable.placeholder),
contentDescription = stringResource(R.string.description),
contentScale = ContentScale.Crop,
modifier = Modifier.clip(CircleShape)
)- 新功能:引入公開的
DiskCacheAPI。- 使用
ImageLoader.Builder.diskCache和DiskCache.Builder配置磁碟快取。 - 您不應將 OkHttp 的
Cache與 Coil 2.0 一起使用。請參閱 此處 以獲取更多資訊。 Cache-Control和其他快取標頭仍受支援 - 除了Vary標頭,因為快取僅檢查 URL 是否匹配。此外,只有響應碼在 [200..300) 範圍內的響應才會被快取。- 升級到 2.0 時,現有磁碟快取將被清除。
- 使用
- 最低支援 API 現在是 21。
ImageRequest的預設Scale現在是Scale.FIT。- 此變更旨在使
ImageRequest.scale與其他具有預設Scale的類別保持一致。 - 帶有
ImageViewTarget的請求仍會自動偵測其Scale。
- 此變更旨在使
- 重構影像管道類別:
Mapper、Fetcher和Decoder已重構以更靈活。Fetcher.key已替換為新的Keyer介面。Keyer從輸入資料建立快取鍵。- 增加
ImageSource,它允許Decoder直接使用 Okio 的檔案系統 API 讀取File。
- 重構 Jetpack Compose 整合:
rememberImagePainter和ImagePainter已分別重命名為rememberAsyncImagePainter和AsyncImagePainter。- 棄用
LocalImageLoader。請查閱棄用訊息以獲取更多資訊。
- 停用生成運行時非空斷言。
- 如果您使用 Java,將 null 作為非空註解參數傳遞給函式將不再立即拋出
NullPointerException。Kotlin 的編譯時空安全會防止這種情況發生。 - 此變更可使函式庫的大小更小。
- 如果您使用 Java,將 null 作為非空註解參數傳遞給函式將不再立即拋出
Size現在由兩個Dimension值(用於寬度和高度)組成。Dimension可以是正像素值或Dimension.Undefined。請參閱 此處 以獲取更多資訊。BitmapPool和PoolableViewTarget已從函式庫中移除。VideoFrameFileFetcher和VideoFrameUriFetcher已從函式庫中移除。請改用VideoFrameDecoder,它支援所有資料來源。BlurTransformation和GrayscaleTransformation已從函式庫中移除。如果您使用它們,可以將其程式碼複製到您的專案中。- 將
Transition.transition更改為非暫停函式,因為不再需要暫停過渡直到其完成。 - 增加對
bitmapFactoryMaxParallelism的支援,該屬性限制進行中的BitmapFactory操作的最大數量。此值預設為 4,這提升了 UI 效能。 - 增加對
interceptorDispatcher、fetcherDispatcher、decoderDispatcher和transformationDispatcher的支援。 - 增加
GenericViewTarget,它處理常見的ViewTarget邏輯。 - 增加
ByteBuffer到預設支援的資料類型中。 Disposable已重構並公開了底層ImageRequest的 job。- 重構
MemoryCacheAPI。 - 如果
ImageRequest.fallback為 null,則ImageRequest.error現在會在Target上設定。 Transformation.key已替換為Transformation.cacheKey。- 將 Kotlin 更新至 1.6.10。
- 將 Compose 更新至 1.1.1。
- 將 OkHttp 更新至 4.9.3。
- 將 Okio 更新至 3.0.0。
自 2.0.0-rc03 以來的變更:
- 將
Dimension.Original轉換為Dimension.Undefined。- 這稍微改變了非像素維度的語義,以修正尺寸系統中的一些邊緣情況(範例)。
- 如果 ContentScale 為 None,則使用
Size.ORIGINAL載入影像。 - 修正先應用
ImageView.load建構器引數而不是最後應用。 - 修正如果響應未修改則不組合 HTTP 標頭的問題。
[2.0.0-rc03] - 2022 年 4 月 11 日
- 移除
ScaleResolver介面。 - 將
Size建構子轉換為函式。 - 將
Dimension.Pixels的toString更改為僅為其像素值。 - 防範
SystemCallbacks.onTrimMemory中的罕見崩潰。 - 將 Coroutines 更新至 1.6.1。
[2.0.0-rc02] - 2022 年 3 月 20 日
- 還原
ImageRequest的預設尺寸為當前顯示尺寸,而不是Size.ORIGINAL。 - 修正
DiskCache.Builder被標記為實驗性的問題。只有DiskCache的方法是實驗性的。 - 修正將影像載入到
ImageView中,如果其中一個維度為WRAP_CONTENT,則會以原始尺寸載入影像而不是適應限定維度的情況。 - 移除
MemoryCache.Key、MemoryCache.Value和Parameters.Entry中的元件函式。
[2.0.0-rc01] - 2022 年 3 月 2 日
自 1.4.0 以來的重大變更:
- 最低支援 API 現在是 21。
- 重構 Jetpack Compose 整合。
rememberImagePainter已重命名為rememberAsyncImagePainter。- 增加對
AsyncImage和SubcomposeAsyncImage的支援。請查閱文件以獲取更多資訊。 - 棄用
LocalImageLoader。請查閱棄用訊息以獲取更多資訊。
- Coil 2.0 有自己的磁碟快取實作,不再依賴 OkHttp 進行磁碟快取。
- 使用
ImageLoader.Builder.diskCache和DiskCache.Builder配置磁碟快取。 - 您不應將 OkHttp 的
Cache與 Coil 2.0 一起使用,因為如果在寫入時執行緒被中斷,快取可能會損壞。 Cache-Control和其他快取標頭仍受支援 - 除了Vary標頭,因為快取僅檢查 URL 是否匹配。此外,只有響應碼在 [200..300) 範圍內的響應才會被快取。- 升級到 2.0 時,現有磁碟快取將被清除。
- 使用
ImageRequest的預設Scale現在是Scale.FIT。- 此變更旨在使
ImageRequest.scale與其他具有預設Scale的類別保持一致。 - 帶有
ImageViewTarget的請求仍會自動偵測其Scale。
- 此變更旨在使
ImageRequest的預設尺寸現在是Size.ORIGINAL。- 重構影像管道類別:
Mapper、Fetcher和Decoder已重構以更靈活。Fetcher.key已替換為新的Keyer介面。Keyer從輸入資料建立快取鍵。- 增加
ImageSource,它允許Decoder直接使用 Okio 的檔案系統 API 讀取File。
- 停用生成運行時非空斷言。
- 如果您使用 Java,將 null 作為非空註解參數傳遞給函式將不再立即拋出
NullPointerException。如果您使用 Kotlin,則基本沒有變化。 - 此變更可使函式庫的大小更小。
- 如果您使用 Java,將 null 作為非空註解參數傳遞給函式將不再立即拋出
Size現在由兩個Dimension值(用於寬度和高度)組成。Dimension可以是正像素值或Dimension.Original。BitmapPool和PoolableViewTarget已從函式庫中移除。VideoFrameFileFetcher和VideoFrameUriFetcher已從函式庫中移除。請改用VideoFrameDecoder,它支援所有資料來源。BlurTransformation和GrayscaleTransformation已從函式庫中移除。如果您使用它們,可以將其程式碼複製到您的專案中。- 將
Transition.transition更改為非暫停函式,因為不再需要暫停過渡直到其完成。 - 增加對
bitmapFactoryMaxParallelism的支援,該屬性限制進行中的BitmapFactory操作的最大數量。此值預設為 4,這提升了 UI 效能。 - 增加對
interceptorDispatcher、fetcherDispatcher、decoderDispatcher和transformationDispatcher的支援。 - 增加
GenericViewTarget,它處理常見的ViewTarget邏輯。 - 增加
ByteBuffer到預設支援的資料類型中。 Disposable已重構並公開了底層ImageRequest的 job。- 重構
MemoryCacheAPI。 - 如果
ImageRequest.fallback為 null,則ImageRequest.error現在會在Target上設定。 Transformation.key已替換為Transformation.cacheKey。- 將 Kotlin 更新至 1.6.10。
- 將 Compose 更新至 1.1.1。
- 將 OkHttp 更新至 4.9.3。
- 將 Okio 更新至 3.0.0。
自 2.0.0-alpha09 以來的變更:
- 移除
-Xjvm-default=all編譯器旗標。 - 修正如果多個帶有
must-revalidate/e-tag的請求同時執行時,影像載入失敗的問題。 - 修正
DecodeUtils.isSvg如果<svg標籤後有新行字元則返回 false 的問題。 - 使
LocalImageLoader.provides棄用訊息更清晰。 - 將 Compose 更新至 1.1.1。
- 將
accompanist-drawablepainter更新至 0.23.1。
[2.0.0-alpha09] - 2022 年 2 月 16 日
- 修正
AsyncImage創建無效約束的問題。(#1134) - 為
AsyncImagePainter增加ContentScale引數。(#1144)- 這應該設定為與
Image上設定的相同值,以確保影像以正確的尺寸載入。
- 這應該設定為與
- 增加
ScaleResolver以支援惰性解析ImageRequest的Scale。(#1134)ImageRequest.scale應替換為ImageRequest.scaleResolver.scale()。
- 將 Compose 更新至 1.1.0。
- 將
accompanist-drawablepainter更新至 0.23.0。 - 將
androidx.lifecycle更新至 2.4.1。
[2.0.0-alpha08] - 2022 年 2 月 7 日
- 更新
DiskCache和ImageSource以使用 Okio 的FileSystemAPI。(#1115)
[2.0.0-alpha07] - 2022 年 1 月 30 日
- 顯著提升
AsyncImage效能,並將AsyncImage拆分為AsyncImage和SubcomposeAsyncImage。(#1048)SubcomposeAsyncImage提供loading/success/error/content插槽 API,並使用效能較差的子組合。AsyncImage提供placeholder/error/fallback引數,用於覆寫載入時或請求不成功時繪製的Painter。AsyncImage不使用子組合,效能比SubcomposeAsyncImage好得多。- 從
SubcomposeAsyncImage.content中移除AsyncImagePainter.State引數。如果需要,請使用painter.state。 - 為
AsyncImage和SubcomposeAsyncImage增加onLoading/onSuccess/onError回呼。
- 棄用
LocalImageLoader。(#1101) - 增加對
ImageRequest.tags的支援。(#1066) - 將
isGif、isWebP、isAnimatedWebP、isHeif和isAnimatedHeif從DecodeUtils移動到coil-gif。將isSvg增加到coil-svg。(#1117) - 將
FetchResult和DecodeResult轉換為非資料類別。(#1114) - 移除未使用的
DiskCache.Builder上下文引數。(#1099) - 修正具有原始尺寸的位圖資源的縮放問題。(#1072)
- 修正
ImageDecoderDecoder中無法關閉ImageDecoder的問題。(#1109) - 修正將可繪製物件 (drawable) 轉換為位圖時縮放不正確的問題。(#1084)
- 將 Compose 更新至 1.1.0-rc03。
- 將
accompanist-drawablepainter更新至 0.22.1-rc。 - 將
androidx.appcompat:appcompat-resources更新至 1.4.1。
[2.0.0-alpha06] - 2021 年 12 月 24 日
- 增加
ImageSource.Metadata以支援從資產、資源和內容 URI 解碼,而無需緩衝或暫存檔案。(#1060) - 延遲執行影像請求,直到
AsyncImage具有正約束。(#1028) - 修正如果
loading、success和error都設定時,AsyncImage使用DefaultContent的問題。(#1026) - 使用
androidx的LruCache而不是平台LruCache。(#1047) - 將 Kotlin 更新至 1.6.10。
- 將 Coroutines 更新至 1.6.0。
- 將 Compose 更新至 1.1.0-rc01。
- 將
accompanist-drawablepainter更新至 0.22.0-rc。 - 將
androidx.collection更新至 1.2.0。
[2.0.0-alpha05] - 2021 年 11 月 28 日
- 重要:重構
Size以支援對任何維度使用影像的原始尺寸。Size現在由兩個Dimension值組成,分別表示其寬度和高度。Dimension可以是正像素值或Dimension.Original。- 進行此變更是為了更好地支援當一個維度是固定像素值時的無界寬度/高度值(例如
wrap_content、Constraints.Infinity)。
- 修正:支援
AsyncImage的檢查模式 (預覽)。 - 修正:如果
imageLoader.memoryCache為 null,SuccessResult.memoryCacheKey應始終為null。 - 將
ImageLoader、SizeResolver和ViewSizeResolver類似建構子的invoke函式轉換為頂層函式。 - 使
CrossfadeDrawable的開始和結束可繪製物件成為公開 API。 - 變異
ImageLoader的預留位置/錯誤/備用可繪製物件。 - 為
SuccessResult的建構子增加預設引數。 - 依賴
androidx.collection而不是androidx.collection-ktx。 - 將 OkHttp 更新至 4.9.3。
[2.0.0-alpha04] - 2021 年 11 月 22 日
- 新功能:為
coil-compose增加AsyncImage。AsyncImage是一個可組合項,它非同步執行ImageRequest並渲染結果。AsyncImage旨在替代大多數用例的rememberImagePainter。- 其 API 尚未最終確定,在最終的 2.0 版本發布之前可能會發生變化。
- 它與
Image具有相似的 API,並支援相同的引數:Alignment、ContentScale、alpha、ColorFilter和FilterQuality。 - 它支援使用
content、loading、success和error引數覆寫每個AsyncImagePainter狀態繪製的內容。 - 它修正了
rememberImagePainter在解析影像尺寸和比例方面存在的一些設計問題。 - 範例用法:
kotlin
// 只繪製影像。
AsyncImage(
model = "https://example.com/image.jpg",
contentDescription = null, // 避免使用 `null`,如果可能,請將其設定為本地化字串。
)
// 繪製帶有圓形裁剪、交叉淡入和覆寫 `loading` 狀態的影像。
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data("https://example.com/image.jpg")
.crossfade(true)
.build(),
contentDescription = null,
modifier = Modifier
.clip(CircleShape),
loading = {
CircularProgressIndicator()
},
contentScale = ContentScale.Crop
)
// 繪製帶有圓形裁剪、交叉淡入和覆寫所有狀態的影像。
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data("https://example.com/image.jpg")
.crossfade(true)
.build(),
contentDescription = null,
modifier = Modifier
.clip(CircleShape),
contentScale = ContentScale.Crop
) { state ->
if (state is AsyncImagePainter.State.Loading) {
CircularProgressIndicator()
} else {
AsyncImageContent() // 繪製影像。
}
}- 重要:將
ImagePainter重命名為AsyncImagePainter,將rememberImagePainter重命名為rememberAsyncImagePainter。- 不再支援
ExecuteCallback。要讓AsyncImagePainter跳過等待onDraw被呼叫,請改為設定ImageRequest.size(OriginalSize)(或任何尺寸)。 - 為
rememberAsyncImagePainter增加一個可選的FilterQuality引數。
- 不再支援
- 在
DiskCache中使用協程進行清理操作,並增加DiskCache.Builder.cleanupDispatcher。 - 修正使用
ImageLoader.Builder.placeholder設定的預留位置的 Compose 預覽。 - 使用
@ReadOnlyComposable標記LocalImageLoader.current以生成更高效的程式碼。 - 將 Compose 更新至 1.1.0-beta03,並依賴
compose.foundation而不是compose.ui。 - 將
androidx.appcompat-resources更新至 1.4.0。
[2.0.0-alpha03] - 2021 年 11 月 12 日
- 增加在 Android 29+ 上載入音樂縮圖的功能。(#967)
- 修正:使用
context.resources載入當前套件的資源。(#968) - 修正:
clear->dispose替換表達式。(#970) - 將 Compose 更新至 1.0.5。
- 將
accompanist-drawablepainter更新至 0.20.2。 - 將 Okio 更新至 3.0.0。
- 將
androidx.annotation更新至 1.3.0。 - 將
androidx.core更新至 1.7.0。 - 將
androidx.lifecycle更新至 2.4.0。- 移除對
lifecycle-common-java8的依賴,因為它已合併到lifecycle-common中。
- 移除對
[2.0.0-alpha02] - 2021 年 10 月 24 日
- 增加一個新的
coil-bomArtifact,其中包括一個 物料清單 (bill of materials)。- 匯入
coil-bom允許您依賴其他 Coil Artifact 而無需指定版本。
- 匯入
- 修正使用
ExecuteCallback.Immediate時載入影像失敗的問題。 - 將 Okio 更新至 3.0.0-alpha.11。
- 這也解決了與 Okio 3.0.0-alpha.11 的相容性問題。
- 將 Kotlin 更新至 1.5.31。
- 將 Compose 更新至 1.0.4。
[2.0.0-alpha01] - 2021 年 10 月 11 日
Coil 2.0.0 是函式庫的下一個主要迭代版本,具有新功能、效能改進、API 改進和各種錯誤修正。在 2.0.0 穩定版發布之前,此版本可能與未來的 alpha 版本存在二進制/源碼不相容問題。
- 重要:最低支援 API 現在是 21。
- 重要:啟用
-Xjvm-default=all。 - 重要:Coil 現在擁有自己的磁碟快取實作,不再依賴 OkHttp 進行磁碟快取。
- 進行此變更是為了:
- 更好地支援解碼影像時的執行緒中斷。當影像請求快速啟動和停止時,這會提升效能。
- 支援公開由
File支援的ImageSource。當 Android API 需要File進行解碼時(例如MediaMetadataRetriever),這可以避免不必要的複製。 - 支援直接讀取/寫入磁碟快取檔案。
- 使用
ImageLoader.Builder.diskCache和DiskCache.Builder配置磁碟快取。 - 您不應將 OkHttp 的
Cache與 Coil 2.0 一起使用,因為如果在寫入時執行緒被中斷,它可能會損壞。 Cache-Control和其他快取標頭仍受支援 - 除了Vary標頭,因為快取僅檢查 URL 是否匹配。此外,只有響應碼在 [200..300) 範圍內的響應才會被快取。- 可以使用
ImageLoader.Builder.respectCacheHeaders啟用或停用快取標頭的支援。 - 升級到 2.0 時,現有磁碟快取將被清除並重建。
- 進行此變更是為了:
- 重要:
ImageRequest的預設Scale現在是Scale.FIT- 此變更旨在使
ImageRequest.scale與其他具有預設Scale的類別保持一致。 - 帶有
ImageViewTarget的請求仍會自動偵測其縮放比例。
- 此變更旨在使
- 影像管道類別的重大變更:
Mapper、Fetcher和Decoder已重構以更靈活。Fetcher.key已替換為新的Keyer介面。Keyer從輸入資料建立快取鍵。- 增加
ImageSource,它允許Decoder直接解碼File。
BitmapPool和PoolableViewTarget已從函式庫中移除。移除位圖池化的原因:MemoryCache已重構以更靈活。- 停用生成運行時非空斷言。
- 如果您使用 Java,將 null 作為非空註解參數傳遞給函式將不再立即拋出
NullPointerException。如果您使用 Kotlin,則基本沒有變化。 - 此變更可使函式庫的大小更小。
- 如果您使用 Java,將 null 作為非空註解參數傳遞給函式將不再立即拋出
VideoFrameFileFetcher和VideoFrameUriFetcher已從函式庫中移除。請改用VideoFrameDecoder,它支援所有資料來源。- 增加對
bitmapFactoryMaxParallelism的支援,該屬性限制進行中的BitmapFactory操作的最大數量。此值預設為 4,這提升了 UI 效能。 - 增加對
interceptorDispatcher、fetcherDispatcher、decoderDispatcher和transformationDispatcher的支援。 Disposable已重構並公開了底層ImageRequest的 job。- 將
Transition.transition更改為非暫停函式,因為不再需要暫停過渡直到其完成。 - 增加
GenericViewTarget,它處理常見的ViewTarget邏輯。 BlurTransformation和GrayscaleTransformation已從函式庫中移除。- 如果您使用它們,可以將其程式碼複製到您的專案中。
- 如果
ImageRequest.fallback為 null,則ImageRequest.error現在會在Target上設定。 Transformation.key已替換為Transformation.cacheKey。ImageRequest.Listener在onSuccess和onError中分別返回SuccessResult/ErrorResult。- 增加
ByteBuffer到預設支援的資料類型中。 - 移除多個類別的
toString實作。 - 將 OkHttp 更新至 4.9.2。
- 將 Okio 更新至 3.0.0-alpha.10。
[1.4.0] - 2021 年 10 月 6 日
- 新功能:將
ImageResult添加到ImagePainter.State.Success和ImagePainter.State.Error。(#887)- 這是一個對
ImagePainter.State.Success和ImagePainter.State.Error簽章的二進制不相容變更,但這些 API 被標記為實驗性。
- 這是一個對
- 僅在
View.isShown為true時執行CrossfadeTransition。之前它只會檢查View.isVisible。(#898) - 修正由於捨入問題,如果縮放乘數略小於 1,則可能發生記憶體快取遺失。(#899)
- 使非內聯
ComponentRegistry方法公開。(#925) - 依賴
accompanist-drawablepainter並移除 Coil 的自訂DrawablePainter實作。(#845) - 移除 Java 8 方法的使用,以防範去糖化問題。(#924)
- 將
ImagePainter.ExecuteCallback提升為穩定 API。(#927) - 將編譯 SDK 更新至 31。
- 將 Kotlin 更新至 1.5.30。
- 將 Coroutines 更新至 1.5.2。
- 將 Compose 更新至 1.0.3。
[1.3.2] - 2021 年 8 月 4 日
coil-compose現在依賴於compose.ui而不是compose.foundation。compose.ui是一個較小的依賴項,因為它是compose.foundation的子集。
- 將 Jetpack Compose 更新至 1.0.1。
- 將 Kotlin 更新至 1.5.21。
- 將 Coroutines 更新至 1.5.1。
- 將
androidx.exifinterface:exifinterface更新至 1.3.3。
[1.3.1] - 2021 年 7 月 28 日
- 將 Jetpack Compose 更新至
1.0.0。恭喜 Compose 團隊 穩定版發布! - 將
androidx.appcompat:appcompat-resources更新至 1.3.1。
[1.3.0] - 2021 年 7 月 10 日
- 新功能:增加對 Jetpack Compose 的支援。它基於 Accompanist 的 Coil 整合,但有一些變更。請查閱 文件 以獲取更多資訊。
- 增加
allowConversionToBitmap以啟用/停用Transformation的自動位圖轉換。(#775) - 增加
enforceMinimumFrameDelay到ImageDecoderDecoder和GifDecoder,以在 GIF 幀延遲低於閾值時啟用重寫。(#783)- 此功能預設為停用,但在未來版本中將預設為啟用。
- 增加對啟用/停用
ImageLoader內部網路觀察器的支援。(#741) - 修正
BitmapFactoryDecoder解碼的位圖密度。(#776) - 修正 Licensee 未找到 Coil 的授權 URL。(#774)
- 將
androidx.core:core-ktx更新至 1.6.0。
[1.2.2] - 2021 年 6 月 4 日
- 修正將具有共享狀態的可繪製物件轉換為位圖時的競態條件。(#771)
- 修正
ImageLoader.Builder.fallback設定了error可繪製物件而不是fallback可繪製物件的問題。 - 修正
ResourceUriFetcher返回不正確資料來源的問題。(#770) - 修正 API 26 和 27 上沒有可用檔案描述符的日誌檢查。
- 修正平台向量可繪製物件支援的版本檢查不正確。(#751)
- 更新 Kotlin (1.5.10)。
- 更新 Coroutines (1.5.0)。
- 更新
androidx.appcompat:appcompat-resources至 1.3.0。 - 更新
androidx.core:core-ktx至 1.5.0。
[1.2.1] - 2021 年 4 月 27 日
- 修正:
VideoFrameUriFetcher嘗試處理 http/https URI 的問題。(#734
[1.2.0] - 2021 年 4 月 12 日
- 重要:在
SvgDecoder中使用 SVG 的視圖邊界計算其長寬比。(#688)- 之前,
SvgDecoder使用 SVG 的width/height元素來確定其長寬比,但這不正確地遵循 SVG 規範。 - 要恢復舊行為,請在建構
SvgDecoder時設定useViewBoundsAsIntrinsicSize = false。
- 之前,
- 新功能:增加
VideoFrameDecoder以支援從任何來源解碼視訊幀。(#689) - 新功能:支援使用來源內容而不是僅 MIME 類型自動偵測 SVG。(#654)
- 新功能:支援使用
ImageLoader.newBuilder()共享資源。(#653)- 重要的是,這使得
ImageLoader實例之間可以共享記憶體快取。
- 重要的是,這使得
- 新功能:增加對使用
AnimatedTransformation進行動畫影像轉換的支援。(#659) - 新功能:增加對動畫可繪製物件的開始/結束回呼的支援。(#676)
- 修正解析 HEIF/HEIC 檔案的 EXIF 資料問題。(#664)
- 修正如果位圖池化停用時未使用
EmptyBitmapPool實作的問題。(#638)- 如果沒有此修正,位圖池化雖然仍被正確停用,但它使用了更重量級的
BitmapPool實作。
- 如果沒有此修正,位圖池化雖然仍被正確停用,但它使用了更重量級的
- 修正
MovieDrawable.getOpacity可能錯誤返回透明的情況。(#682) - 防範預設暫存目錄不存在的情況。(#683)
- 使用 JVM IR 後端建置。(#670)
- 更新 Kotlin (1.4.32)。
- 更新 Coroutines (1.4.3)。
- 更新 OkHttp (3.12.13)。
- 更新
androidx.lifecycle:lifecycle-common-java8至 2.3.1。
[1.1.1] - 2021 年 1 月 11 日
- 修正
ViewSizeResolver.size可能因協程多次恢復而拋出IllegalStateException的情況。 - 修正
HttpFetcher如果從主執行緒呼叫則會永遠阻塞。- 使用
ImageRequest.dispatcher(Dispatchers.Main.immediate)強制在主執行緒執行的請求將失敗並拋出NetworkOnMainThreadException,除非ImageRequest.networkCachePolicy設定為CachePolicy.DISABLED或CachePolicy.WRITE_ONLY。
- 使用
- 如果視訊具有旋轉中繼資料,則旋轉
VideoFrameFetcher的視訊幀。 - 更新 Kotlin (1.4.21)。
- 更新 Coroutines (1.4.2)。
- 更新 Okio (2.10.0)。
- 更新
androidx.exifinterface:exifinterface(1.3.2)。
[1.1.0] - 2020 年 11 月 24 日
- 重要:將
CENTER和MATRIXImageView縮放類型更改為解析為OriginalSize。(#587)- 此變更僅影響當請求的尺寸未明確指定時的隱式尺寸解析演算法。
- 進行此變更是為了確保影像請求的視覺結果與
ImageView.setImageResource/ImageView.setImageURI一致。要恢復舊行為,請在建構請求時設定ViewSizeResolver。
- 重要:如果視圖的佈局參數為
WRAP_CONTENT,則從ViewSizeResolver返回顯示尺寸。(#562)- 之前,我們只會在視圖完全佈局後返回顯示尺寸。此變更使得典型行為更加一致和直觀。
- 增加控制 alpha 預乘的功能。(#569)
- 支援
CrossfadeDrawable中偏好精確固有尺寸。(#585) - 檢查包含版本的完整 GIF 標頭。(#564)
- 增加一個空的位圖池實作。(#561)
- 使
EventListener.Factory成為函式介面。(#575) - 穩定
EventListener。(#574) - 為
ImageRequest.Builder.placeholderMemoryCacheKey增加String重載。 - 為
ViewSizeResolver建構子增加@JvmOverloads。 - 修正:變異
CrossfadeDrawable中的開始/結束可繪製物件。(#572) - 修正:修正 GIF 在第二次載入時不播放的問題。(#577)
- 更新 Kotlin (1.4.20) 並遷移到
kotlin-parcelize外掛。 - 更新 Coroutines (1.4.1)。
[1.0.0] - 2020 年 10 月 22 日
自 0.13.0 以來的變更:
- 增加
Context.imageLoader擴充函式。(#534) - 增加
ImageLoader.executeBlocking擴充函式。(#537) - 如果替換了先前的單例影像載入器,則不要關閉它。(#533)
自 1.0.0-rc3 以來的變更:
- 修正:防範缺少/無效的 ActivityManager。(#541)
- 修正:允許 OkHttp 快取不成功的響應。(#551)
- 將 Kotlin 更新至 1.4.10。
- 將 Okio 更新至 2.9.0。
- 將
androidx.exifinterface:exifinterface更新至 1.3.1。
[1.0.0-rc3] - 2020 年 9 月 21 日
- 由於不穩定性,還原使用
-Xjvm-default=all編譯器旗標。- 這是一個源碼相容,但二進制不相容的變更,與之前的發布候選版本相比。
- 增加
Context.imageLoader擴充函式。(#534) - 增加
ImageLoader.executeBlocking擴充函式。(#537) - 如果替換了先前的單例影像載入器,則不要關閉它。(#533)
- 更新 AndroidX 依賴:
androidx.exifinterface:exifinterface-> 1.3.0
[1.0.0-rc2] - 2020 年 9 月 3 日
- 此版本需要 Kotlin 1.4.0 或更高版本。
- 0.13.0 中存在的所有變更。
- 依賴基礎 Kotlin
stdlib而不是stdlib-jdk8。
[0.13.0] - 2020 年 9 月 3 日
- 重要:預設在主執行緒上啟動攔截器鏈。(#513)
- 這在很大程度上恢復了
0.11.0及以下版本的行為,其中記憶體快取會同步在主執行緒上檢查。 - 要恢復與
0.12.0相同的行為,即在ImageRequest.dispatcher上檢查記憶體快取,請設定ImageLoader.Builder.launchInterceptorChainOnMainThread(false)。 - 請參閱
launchInterceptorChainOnMainThread以獲取更多資訊。
- 這在很大程度上恢復了
- 修正:修正如果請求在分離的片段中的
ViewTarget上啟動時可能發生的記憶體洩漏。(#518) - 修正:使用
ImageRequest.context載入資源 URI。(#517) - 修正:修正可能導致後續請求未保存到磁碟快取的競態條件。(#510)
- 修正:在 API 18 上使用
blockCountLong和blockSizeLong。
- 使
ImageLoaderFactory成為函式介面。 - 增加
ImageLoader.Builder.addLastModifiedToFileCacheKey,它允許您啟用/停用為從File載入的影像的記憶體快取鍵增加上次修改時間戳。
- 將 Kotlin 更新至 1.4.0。
- 將 Coroutines 更新至 1.3.9。
- 將 Okio 更新至 2.8.0。
[1.0.0-rc1] - 2020 年 8 月 18 日
- 此版本需要 Kotlin 1.4.0 或更高版本。
- 將 Kotlin 更新至 1.4.0 並啟用
-Xjvm-default=all。- 請參閱此處 了解如何在您的建置檔案中啟用
-Xjvm-default=all。 - 這會為預設的 Kotlin 介面方法生成 Java 8 預設方法。
- 請參閱此處 了解如何在您的建置檔案中啟用
- 移除 0.12.0 中所有現有的棄用方法。
- 將 Coroutines 更新至 1.3.9。
[0.12.0] - 2020 年 8 月 18 日
- 破壞性變更:
LoadRequest和GetRequest已被ImageRequest替換:ImageLoader.execute(LoadRequest)->ImageLoader.enqueue(ImageRequest)ImageLoader.execute(GetRequest)->ImageLoader.execute(ImageRequest)ImageRequest實作了equals/hashCode。
- 破壞性變更:許多類別已重命名和/或更改套件:
coil.request.RequestResult->coil.request.ImageResultcoil.request.RequestDisposable->coil.request.Disposablecoil.bitmappool.BitmapPool->coil.bitmap.BitmapPoolcoil.DefaultRequestOptions->coil.request.DefaultRequestOptions
- 破壞性變更:
SparseIntArraySet已從公開 API 中移除。 - 破壞性變更:
TransitionTarget不再實作ViewTarget。 - 破壞性變更:
ImageRequest.Listener.onSuccess的簽章已更改為返回ImageResult.Metadata而不是僅DataSource。 - 破壞性變更:移除對
LoadRequest.aliasKeys的支援。此 API 最好通過對記憶體快取的直接讀寫存取來處理。
- 重要:記憶體快取中的值不再同步解析(如果從主執行緒呼叫)。
- 此變更也是支援在背景調度器上執行
Interceptor的必要條件。 - 此變更還將更多工作從主執行緒轉移開,提升了效能。
- 此變更也是支援在背景調度器上執行
- 重要:
Mappers現在在背景調度器上執行。作為副作用,不再自動支援自動位圖取樣。要實現相同的效果,請使用前一個請求的MemoryCache.Key作為後續請求的placeholderMemoryCacheKey。請參閱此處的範例。placeholderMemoryCacheKeyAPI 提供了更多自由,因為您可以“連結”兩個具有不同資料(例如,小/大影像的不同 URL)的影像請求。
- 重要:Coil 的
ImageView擴充函式已從coil.api套件移至coil套件。- 使用查找和替換將
import coil.api.load重構為import coil.load。不幸的是,無法使用 Kotlin 的ReplaceWith功能替換匯入。
- 使用查找和替換將
- 重要:如果可繪製物件不是相同的影像,則使用標準交叉淡入。
- 重要:在 API 24+ 上優先使用不可變位圖。
- 重要:
MeasuredMapper已被棄用,取而代之的是新的Interceptor介面。請參閱 此處 的範例,了解如何將MeasuredMapper轉換為Interceptor。Interceptor是一個限制較少的 API,允許更廣泛的自訂邏輯。
- 重要:
ImageRequest.data現在是非 null 的。如果您創建ImageRequest時未設定其資料,則會將NullRequestData作為其資料返回。
- 新功能:增加對
ImageLoader的MemoryCache的直接讀寫存取支援。請參閱 文件 以獲取更多資訊。 - 新功能:增加對
Interceptor的支援。請參閱 文件 以獲取更多資訊。Coil 的Interceptor設計深受 OkHttp 的啟發! - 新功能:增加使用
ImageLoader.Builder.bitmapPoolingEnabled啟用/停用位圖池化的功能。- 位圖池化在 API 23 及以下版本上最有效,但在 API 24 及以上版本上仍可能受益(通過及時呼叫
Bitmap.recycle)。
- 位圖池化在 API 23 及以下版本上最有效,但在 API 24 及以上版本上仍可能受益(通過及時呼叫
- 新功能:支援解碼時的執行緒中斷。
- 修正解析內容類型標頭中的多個區段的問題。
- 重構位圖引用計數以更健壯。
- 修正 API < 19 裝置上的 WebP 解碼問題。
- 在 EventListener API 中公開 FetchResult 和 DecodeResult。
- 使用 SDK 30 編譯。
- 將 Coroutines 更新至 1.3.8。
- 將 OkHttp 更新至 3.12.12。
- 將 Okio 更新至 2.7.0。
- 更新 AndroidX 依賴:
androidx.appcompat:appcompat-resources-> 1.2.0androidx.core:core-ktx-> 1.3.1
[0.11.0] - 2020 年 5 月 14 日
- 破壞性變更:此版本移除了所有現有的棄用函式。
- 這使得可以移除 Coil 的
ContentProvider,因此它在應用程式啟動時不執行任何程式碼。
- 這使得可以移除 Coil 的
- 破壞性變更:將
SparseIntArraySet.size轉換為 val。(#380) - 破壞性變更:將
Parameters.count()移至擴充函式。(#403) - 破壞性變更:使
BitmapPool.maxSize為 Int。(#404)
- 重要:預設使
ImageLoader.shutdown()可選(類似於OkHttpClient)。(#385)
- 將預設記憶體快取大小減少到 20%。(#390)
- 要恢復現有行為,請在創建
ImageLoader時設定ImageLoaderBuilder.availableMemoryPercentage(0.25)。
- 要恢復現有行為,請在創建
- 將 Coroutines 更新至 1.3.6。
- 將 OkHttp 更新至 3.12.11。
[0.10.1] - 2020 年 4 月 26 日
- 修正 API 23 及以下版本上解碼大型 PNG 檔案時出現 OOM 的問題。(#372)。
- 這會停用 PNG 檔案的 EXIF 方向解碼。PNG EXIF 方向很少使用,並且讀取 PNG EXIF 資料(即使是空的)需要將整個檔案緩衝到記憶體中,這對效能不利。
SparseIntArraySet的次要 Java 相容性改進。
- 將 Okio 更新至 2.6.0。
[0.10.0] - 2020 年 4 月 20 日
亮點
此版本棄用了大部分 DSL API,轉而直接使用建構器。變更如下:
kotlin// 0.9.5 (舊) val imageLoader = ImageLoader(context) { bitmapPoolPercentage(0.5) crossfade(true) } val disposable = imageLoader.load(context, "https://example.com/image.jpg") { target(imageView) } val drawable = imageLoader.get("https://example.com/image.jpg") { size(512, 512) } // 0.10.0 (新) val imageLoader = ImageLoader.Builder(context) .bitmapPoolPercentage(0.5) .crossfade(true) .build() val request = LoadRequest.Builder(context) .data("https://example.com/image.jpg") .target(imageView) .build() val disposable = imageLoader.execute(request) val request = GetRequest.Builder(context) .data("https://example.com/image.jpg") .size(512, 512) .build() val drawable = imageLoader.execute(request).drawable- 如果您使用
io.coil-kt:coilArtifact,可以呼叫Coil.execute(request)來使用單例ImageLoader執行請求。
- 如果您使用
ImageLoader現在具有弱引用記憶體快取,它會追蹤從強引用記憶體快取中逐出的影像的弱引用。- 這表示如果影像仍有強引用,則它將始終從
ImageLoader的記憶體快取中返回。 - 通常,這應該使記憶體快取更具可預測性並提高其命中率。
- 此行為可以通過
ImageLoaderBuilder.trackWeakReferences啟用/停用。
- 這表示如果影像仍有強引用,則它將始終從
增加了一個新的 Artifact,
io.coil-kt:coil-video,用於從視訊檔案中解碼特定幀。在此處閱讀更多資訊。增加了一個新的 EventListener API,用於追蹤指標。
增加了 ImageLoaderFactory,您的
Application可以實作它以簡化單例初始化。
完整發布說明
- 重要:棄用 DSL 語法,轉而使用建構器語法。(#267)
- 重要:棄用
Coil和ImageLoader擴充函式。(#322) - 破壞性變更:從
ImageLoader.execute(GetRequest)返回密封的RequestResult類型。(#349) - 破壞性變更:將
ExperimentalCoil重命名為ExperimentalCoilApi。從@Experimental遷移到@RequiresOptIn。(#306) - 破壞性變更:將
CoilLogger替換為Logger介面。(#316) - 破壞性變更:將
destWidth/destHeight重命名為dstWidth/dstHeight。(#275) - 破壞性變更:重新排列
MovieDrawable的建構子參數。(#272) - 破壞性變更:
Request.Listener的方法現在接收完整的Request物件,而不僅僅是其資料。 - 破壞性變更:
GetRequestBuilder現在在其建構子中需要一個Context。 - 破壞性變更:
Request上的幾個屬性現在是可為 null 的。 - 行為變更:預設在快取鍵中包含參數值。(#319)
- 行為變更:稍微調整
Request.Listener.onStart()時間,使其在Target.onStart()後立即呼叫。(#348)
- 新功能:增加
WeakMemoryCache實作。(#295) - 新功能:增加
coil-video以支援解碼視訊幀。(#122) - 新功能:引入
EventListener。(#314) - 新功能:引入
ImageLoaderFactory。(#311) - 新功能:在 Android 11 上支援動畫 HEIF 影像序列。(#297)
- 新功能:提升 Java 相容性。(#262)
- 新功能:支援設定預設
CachePolicy。(#307) - 新功能:支援設定預設
Bitmap.Config。(#342) - 新功能:增加
ImageLoader.invalidate(key)以清除單個記憶體快取項目。(#55) - 新功能:增加偵錯日誌以解釋為何快取影像未被重用。(#346)
- 新功能:支援
get請求的error和fallback可繪製物件。
- 修正:修正當 Transformation 減少輸入位圖大小時的記憶體快取遺失問題。(#357)
- 修正:確保 BlurTransformation 中的半徑低於 RenderScript 最大值。(#291)
- 修正:修正解碼高色彩深度影像的問題。(#358)
- 修正:在 Android 11 及以上版本上停用
ImageDecoderDecoder崩潰的解決方案。(#298) - 修正:修正無法讀取 pre-API 23 上 EXIF 資料的問題。(#331)
- 修正:修正與 Android R SDK 不相容的問題。(#337)
- 修正:僅在
ImageView具有匹配的SizeResolver時才啟用不精確尺寸。(#344) - 修正:允許快取影像最多偏離請求尺寸一個像素。(#360)
- 修正:如果視圖不可見,則跳過交叉淡入過渡。(#361)
- 棄用
CoilContentProvider。(#293) - 使用
@MainThread註解多個ImageLoader方法。 - 如果生命週期目前已啟動,則避免創建
LifecycleCoroutineDispatcher。(#356) OriginalSize.toString()使用完整的套件名稱。- 解碼軟體位圖時預先分配。(#354)
- 將 Kotlin 更新至 1.3.72。
- 將 Coroutines 更新至 1.3.5。
- 將 OkHttp 更新至 3.12.10。
- 將 Okio 更新至 2.5.0。
- 更新 AndroidX 依賴:
androidx.exifinterface:exifinterface-> 1.2.0
[0.9.5] - 2020 年 2 月 6 日
- 修正:確保在檢查視圖是否已硬體加速之前,該視圖已附加。這修正了請求硬體位圖可能錯過記憶體快取的情況。
- 更新 AndroidX 依賴:
androidx.core:core-ktx-> 1.2.0
[0.9.4] - 2020 年 2 月 3 日
- 修正:在 ImageDecoderDecoder 中降取樣時尊重長寬比。感謝 @zhanghai。
- 之前,位圖會從記憶體快取中返回,只要其設定大於或等於請求中指定的設定。例如,如果您請求
ARGB_8888位圖,則可能會從記憶體快取中返回RGBA_F16位圖。現在,快取的設定和請求的設定必須相等。 - 使
scale和durationMillis在CrossfadeDrawable和CrossfadeTransition中公開。
[0.9.3] - 2020 年 2 月 1 日
- 修正:在
ScaleDrawable內部平移子可繪製物件以確保其居中。 - 修正:修正 GIF 和 SVG 未完全填充邊界的情況。
- 將
HttpUrl.get()的呼叫延遲到背景執行緒。 - 改善 BitmapFactory null 位圖錯誤訊息。
- 將 3 個裝置添加到硬體位圖黑名單。(#264)
- 更新 AndroidX 依賴:
androidx.lifecycle:lifecycle-common-java8-> 2.2.0
[0.9.2] - 2020 年 1 月 19 日
- 修正:修正 pre-API 19 上 GIF 解碼的問題。感謝 @mario。
- 修正:修正柵格化向量可繪製物件未被標記為取樣的問題。
- 修正:如果 Movie 維度 <= 0,則拋出例外。
- 修正:修正 CrossfadeTransition 未恢復記憶體快取事件的問題。
- 修正:如果硬體位圖不允許,則防止將其返回給所有目標方法。
- 修正:修正 MovieDrawable 未將自身定位在其邊界中心的問題。
- 移除 CrossfadeDrawable 的自動縮放。
- 使
BitmapPool.trimMemory公開。 - 將 AnimatedImageDrawable 包裹在 ScaleDrawable 中以確保它填滿其邊界。
- 為 RequestBuilder.setParameter 增加 @JvmOverloads。
- 如果 SVG 的視圖框未設定,則將其設定為其尺寸。
- 將狀態和級別更改傳遞給 CrossfadeDrawable 子項。
- 將 OkHttp 更新至 3.12.8。
[0.9.1] - 2019 年 12 月 30 日
- 修正:修正呼叫
LoadRequestBuilder.crossfade(false)時崩潰的問題。
[0.9.0] - 2019 年 12 月 30 日
- 破壞性變更:
Transformation.transform現在包含Size參數。這是為了支援基於Target尺寸改變輸出Bitmap尺寸的轉換。帶有轉換的請求現在也免於 影像取樣。 - 破壞性變更:
Transformation現在應用於任何類型的Drawable。之前,如果輸入Drawable不是BitmapDrawable,Transformation會被跳過。現在,Drawable會被渲染到位圖,然後再應用Transformation。 - 破壞性變更:將
null資料傳遞給ImageLoader.load現在被視為錯誤,並呼叫Target.onError和Request.Listener.onError,並帶有NullRequestDataException。此變更旨在支援在資料為null時設定fallback可繪製物件。之前請求會被靜默忽略。 - 破壞性變更:
RequestDisposable.isDisposed現在是一個val。
- 新功能:支援自訂過渡。 在此處查看更多資訊。過渡被標記為實驗性,因為 API 正在孵化中。
- 新功能:增加
RequestDisposable.await以支援在LoadRequest進行中時暫停。 - 新功能:支援在請求資料為 null 時設定
fallback可繪製物件。 - 新功能:增加
Precision。這使得輸出Drawable的尺寸精確,同時為支援縮放的目標(例如ImageViewTarget)啟用縮放優化。請參閱 其文件 以獲取更多資訊。 - 新功能:增加
RequestBuilder.aliasKeys以支援匹配多個快取鍵。
- 修正:使 RequestDisposable 執行緒安全。
- 修正:
RoundedCornersTransformation現在會裁剪到目標尺寸,然後圓角。 - 修正:
CircleCropTransformation現在從中心裁剪。 - 修正:將多個裝置添加到 硬體位圖黑名單。
- 修正:將可繪製物件轉換為位圖時保留長寬比。
- 修正:修正
Scale.FIT可能導致的記憶體快取遺失。 - 修正:確保 Parameters 迭代順序是確定的。
- 修正:創建 Parameters 和 ComponentRegistry 時的防禦性複製。
- 修正:確保 RealBitmapPool 的 maxSize >= 0。
- 修正:如果 CrossfadeDrawable 未動畫或已完成,則顯示開始可繪製物件。
- 修正:調整 CrossfadeDrawable 以考慮具有未定義固有尺寸的子項。
- 修正:修正
MovieDrawable未正確縮放的問題。
- 將 Kotlin 更新至 1.3.61。
- 將 Kotlin Coroutines 更新至 1.3.3。
- 將 Okio 更新至 2.4.3。
- 更新 AndroidX 依賴:
androidx.exifinterface:exifinterface-> 1.1.0
[0.8.0] - 2019 年 10 月 22 日
- 破壞性變更:
SvgDrawable已被移除。相反,SVG 現在由SvgDecoder預渲染為BitmapDrawable。這使得 SVG 在主執行緒上渲染成本顯著降低。此外,SvgDecoder的建構子現在需要一個Context。 - 破壞性變更:
SparseIntArraySet擴充函式已移至coil.extension套件。
- 新功能:支援設定每個請求的網路標頭。在此處查看更多資訊。
- 新功能:增加新的
ParametersAPI 以支援通過影像管道傳遞自訂資料。 - 新功能:支援 RoundedCornersTransformation 中的單個圓角半徑。感謝 @khatv911。
- 新功能:增加
ImageView.clear()以支援主動釋放資源。 - 新功能:支援從其他套件載入資源。
- 新功能:為 ViewSizeResolver 增加
subtractPadding屬性,以啟用/停用測量時減去視圖的內邊距。 - 新功能:改進 HttpUrlFetcher MIME 類型偵測。
- 新功能:為 MovieDrawable 和 CrossfadeDrawable 增加 Animatable2Compat 支援。
- 新功能:增加
RequestBuilder<*>.repeatCount以設定 GIF 的重複次數。 - 新功能:將 BitmapPool 創建添加到公開 API。
- 新功能:使用
@MainThread註解 Request.Listener 方法。
- 修正:使 CoilContentProvider 對測試可見。
- 修正:將夜間模式包含在資源快取鍵中。
- 修正:通過暫時將來源寫入磁碟來解決 ImageDecoder 原生崩潰問題。
- 修正:正確處理聯絡人顯示照片 URI。
- 修正:將色調傳遞給 CrossfadeDrawable 的子項。
- 修正:修正多個未關閉來源的實例。
- 修正:增加一個設備黑名單,這些設備具有損壞/不完整的硬體位圖實作。
- 針對 SDK 29 編譯。
- 將 Kotlin Coroutines 更新至 1.3.2。
- 將 OkHttp 更新至 3.12.6。
- 將 Okio 更新至 2.4.1。
- 將
appcompat-resources從compileOnly變更為implementation,用於coil-base。
[0.7.0] - 2019 年 9 月 8 日
- 破壞性變更:
ImageLoaderBuilder.okHttpClient(OkHttpClient.Builder.() -> Unit)現在是ImageLoaderBuilder.okHttpClient(() -> OkHttpClient)。初始化器現在也會在背景執行緒上惰性呼叫。如果您設定了自訂OkHttpClient,則必須設定OkHttpClient.cache以啟用磁碟快取。如果您未設定自訂OkHttpClient,Coil 將創建預設的OkHttpClient,該客戶端已啟用磁碟快取。預設的 Coil 快取可以使用CoilUtils.createDefaultCache(context)創建。例如:
kotlin
val imageLoader = ImageLoader(context) {
okHttpClient {
OkHttpClient.Builder()
.cache(CoilUtils.createDefaultCache(context))
.build()
}
}- 破壞性變更:
Fetcher.key不再具有預設實作。 - 破壞性變更:之前,只有第一個適用於
Mapper的會被呼叫。現在,所有適用的Mapper都會被呼叫。無 API 變更。 - 破壞性變更:次要命名參數重命名:
url->uri,factory->initializer。
- 新功能:
coil-svgArtifact,它具有一個SvgDecoder,支援自動解碼 SVG。由 AndroidSVG 提供支援。感謝 @rharter。 - 新功能:
load(String)和get(String)現在接受任何支援的 Uri 方案。例如,您現在可以執行imageView.load("file:///path/to/file.jpg")。 - 新功能:重構 ImageLoader 以使用
Call.Factory而不是OkHttpClient。這允許使用ImageLoaderBuilder.okHttpClient { OkHttpClient() }惰性初始化網路資源。感謝 @ZacSweers。 - 新功能:
RequestBuilder.decoder用於明確設定請求的解碼器。 - 新功能:
ImageLoaderBuilder.allowHardware用於預設為 ImageLoader 啟用/停用硬體位圖。 - 新功能:支援 ImageDecoderDecoder 中的軟體渲染。
- 修正:載入向量可繪製物件的多個錯誤。
- 修正:支援
WRAP_CONTENT視圖維度。 - 修正:支援解析長度超過 8192 位元組的 EXIF 資料。
- 修正:交叉淡入時不要拉伸具有不同長寬比的可繪製物件。
- 修正:防範網路觀察器因例外而無法註冊的問題。
- 修正:修正 MovieDrawable 中的除以零錯誤。感謝 @R12rus。
- 修正:支援巢狀 Android 資產檔案。感謝 @JaCzekanski。
- 修正:防範 Android O 和 O_MR1 上檔案描述符耗盡的問題。
- 修正:修正停用記憶體快取時崩潰的問題。感謝 @hansenji。
- 修正:確保 Target.cancel 始終從主執行緒呼叫。
- 將 Kotlin 更新至 1.3.50。
- 將 Kotlin Coroutines 更新至 1.3.0。
- 將 OkHttp 更新至 3.12.4。
- 將 Okio 更新至 2.4.0。
- 將 AndroidX 依賴更新至最新的穩定版本:
androidx.appcompat:appcompat-> 1.1.0androidx.core:core-ktx-> 1.1.0androidx.lifecycle:lifecycle-common-java8-> 2.1.0
- 將
appcompat替換為appcompat-resources作為可選的compileOnly依賴。appcompat-resources是一個小得多的 Artifact。
[0.6.1] - 2019 年 8 月 16 日
- 新功能:為 RequestBuilder 增加
transformations(List<Transformation>)。 - 修正:為檔案 URI 將上次修改日期添加到快取鍵。
- 修正:確保視圖維度評估為至少 1 像素。
- 修正:清除 MovieDrawable 的畫布,用於幀之間。
- 修正:正確開啟資產。
[0.6.0] - 2019 年 8 月 12 日
- 首次發布。
