はじめに
Compose UI
一般的なCompose UIプロジェクトでは、以下をインポートする必要があります。
implementation("io.coil-kt.coil3:coil-compose:3.3.0")
implementation("io.coil-kt.coil3:coil-network-okhttp:3.3.0")インポート後、AsyncImage を使用してネットワークから画像を読み込むことができます。
AsyncImage(
model = "https://example.com/image.jpg",
contentDescription = null,
)::: Note Compose Multiplatformを使用する場合、OkHttpの代わりにKtorを使用する必要があります。その方法についてはこちらを参照してください。
:::
Android Views
Compose UIの代わりにAndroid Viewsを使用する場合は、以下をインポートします。
implementation("io.coil-kt.coil3:coil:3.3.0")
implementation("io.coil-kt.coil3:coil-network-okhttp:3.3.0")インポート後、ImageView.load 拡張関数を使用してネットワークから画像を読み込むことができます。
imageView.load("https://example.com/image.jpg")シングルトン ImageLoader の構成
デフォルトでは、CoilにはシングルトンImageLoaderが含まれています。ImageLoaderは、ImageRequestの取得、デコード、キャッシュ、および結果の返却を行うことで、受信するImageRequestを実行します。ImageLoaderを構成する必要はありません。構成しない場合、Coilはデフォルト設定でシングルトンImageLoaderを作成します。
いくつかの方法で構成できます(いずれか1つを選択してください)。
- アプリのエントリポイント(アプリのルート
@Composable)付近でsetSingletonImageLoaderFactoryを呼び出す。これはCompose Multiplatformアプリに最適です。
setSingletonImageLoaderFactory { context ->
ImageLoader.Builder(context)
.crossfade(true)
.build()
}- Androidで、
ApplicationにSingletonImageLoader.Factoryを実装する。これはAndroidアプリに最適です。
class CustomApplication : Application(), SingletonImageLoader.Factory {
override fun newImageLoader(context: Context): ImageLoader {
return ImageLoader.Builder(context)
.crossfade(true)
.build()
}
}- アプリのエントリポイント(例:Androidの
Application.onCreate)付近でSingletonImageLoader.setSafeを呼び出す。これが最も柔軟な方法です。
SingletonImageLoader.setSafe { context ->
ImageLoader.Builder(context)
.crossfade(true)
.build()
}::: Note Coilに依存するライブラリを作成している場合、シングルトンImageLoaderを取得/設定すべきではありません。代わりに、io.coil-kt.coil3:coil-coreに依存し、独自のImageLoaderを作成して手動で渡す必要があります。ライブラリ内でシングルトンImageLoaderを設定すると、そのライブラリを使用しているアプリがCoilも使用している場合に、アプリによって設定されたImageLoaderを上書きしてしまう可能性があります。
:::
アーティファクト
CoilがmavenCentral()に公開している主要なアーティファクトのリストを以下に示します。
io.coil-kt.coil3:coil:io.coil-kt.coil3:coil-coreに依存するデフォルトのアーティファクトです。シングルトンImageLoaderと関連する拡張関数が含まれています。io.coil-kt.coil3:coil-core:io.coil-kt.coil3:coilのサブセットで、シングルトンImageLoaderおよび関連する拡張関数は含まれていません。io.coil-kt.coil3:coil-compose:io.coil-kt.coil3:coilとio.coil-kt.coil3:coil-compose-coreに依存するデフォルトのCompose UIアーティファクトです。シングルトンImageLoaderを使用するAsyncImage、rememberAsyncImagePainter、SubcomposeAsyncImageのオーバーロードが含まれています。io.coil-kt.coil3:coil-compose-core:io.coil-kt.coil3:coil-composeのサブセットで、シングルトンImageLoaderに依存する関数は含まれていません。io.coil-kt.coil3:coil-network-okhttp: OkHttpを使用してネットワークから画像をフェッチするサポートが含まれています。io.coil-kt.coil3:coil-network-ktor2: Ktor 2を使用してネットワークから画像をフェッチするサポートが含まれています。io.coil-kt.coil3:coil-network-ktor3: Ktor 3を使用してネットワークから画像をフェッチするサポートが含まれています。io.coil-kt.coil3:coil-network-cache-control: ネットワークから画像をフェッチする際に、Cache-Controlヘッダーを尊重するサポートが含まれています。io.coil-kt.coil3:coil-gif: GIFのデコードをサポートするための2つのデコーダーが含まれています。詳細についてはGIFsを参照してください。io.coil-kt.coil3:coil-svg: SVGのデコードをサポートするためのデコーダーが含まれています。詳細についてはSVGsを参照してください。io.coil-kt.coil3:coil-video: Androidがサポートする任意のビデオ形式からフレームをデコードするサポートのためのデコーダーが含まれています。詳細についてはvideosを参照してください。io.coil-kt.coil3:coil-test: テストをサポートするためのクラスが含まれています。詳細についてはtestingを参照してください。io.coil-kt.coil3:coil-bom: ビルオブマテリアルが含まれています。coil-bomをインポートすると、バージョンを指定せずに他のCoilアーティファクトに依存できるようになります。
