Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/coil-kt/coil

Image loading for Android and Compose Multiplatform.
https://github.com/coil-kt/coil

android androidx compose compose-multiplatform coroutines image-loader images kotlin kotlin-coroutines okio

Last synced: 6 days ago
JSON representation

Image loading for Android and Compose Multiplatform.

Awesome Lists containing this project

README

        

![Coil](logo.svg)

Coil は Kotlin Coroutines で作られた Android 用の画像読み込みライブラリです。 Coil は:

- **高速**: Coil は、メモリとディスクのキャッシング、メモリ内の画像のダウンサンプリング、リクエストの一時停止/キャンセルの自動化など、多くの最適化を実行します。
- **軽量**: Coil は ~2000 のメソッドを APK に追加します (すでに OkHttp と Coroutines を使用しているアプリの場合)。これは Picasso に匹敵し、Glide や Fresco よりも大幅に少ない数です。
- **使いやすい**: Coil の API は、ボイラープレートの最小化とシンプルさのために Kotlin の言語機能を活用しています。
- **現代的**: Coil は Kotlin ファーストで、Coroutines、OkHttp、Okio、AndroidX Lifecycles などの最新のライブラリを使用します。

Coil は **Co**routine **I**mage **L**oader の頭字語です。

## ダウンロード

Coil は `mavenCentral()` で利用できます。

```kotlin
implementation("io.coil-kt:coil:2.5.0")
```

## クイックスタート

#### ImageViews

画像を `ImageView` に読み込むには、 `load` 拡張関数を使用します。

```kotlin
// URL
imageView.load("https://example.com/image.jpg")

// File
imageView.load(File("/path/to/image.jpg"))

// And more...
```

Requests は、 trailing lambda 式を使用して追加の設定を行うことができます:

```kotlin
imageView.load("https://example.com/image.jpg") {
crossfade(true)
placeholder(R.drawable.image)
transformations(CircleCropTransformation())
}
```

#### Jetpack Compose

[Jetpack Compose](https://developer.android.com/jetpack/compose) 拡張ライブラリをインポートします:

```kotlin
implementation("io.coil-kt:coil-compose:2.5.0")
```

画像を読み込むには、`AsyncImage` composable を使用します:

```kotlin
AsyncImage(
model = "https://example.com/image.jpg",
contentDescription = null,
)
```

#### Image Loaders

`imageView.load` と `AsyncImage` はシングルトンの `ImageLoader` を使用して画像リクエストを実行します。 シングルトンの `ImageLoader` には `Context` 拡張関数を使用してアクセスできます:

```kotlin
val imageLoader = context.imageLoader
```

`ImageLoader` は共有できるように設計されており、単一のインスタンスを作成してアプリ全体で共有すると最も効率的です。 また、独自の `ImageLoader` インスタンスを作成することもできます:

```kotlin
val imageLoader = ImageLoader(context)
```

シングルトンの `ImageLoader` が必要ない場合は、 `io.coil-kt:coil` の代わりに `io.coil-kt:coil-base` を使用してください。

#### Requests

画像をカスタムターゲットにロードするには、 `ImageRequest` を `enqueue` してください:

```kotlin
val request = ImageRequest.Builder(context)
.data("https://example.com/image.jpg")
.target { drawable ->
// Handle the result.
}
.build()
val disposable = imageLoader.enqueue(request)
```

画像を命令的にロードするには、 `ImageRequest` を `execute` してください:

```kotlin
val request = ImageRequest.Builder(context)
.data("https://example.com/image.jpg")
.build()
val drawable = imageLoader.execute(request).drawable
```

[こちらで Coil の完全なドキュメント](https://coil-kt.github.io/coil/getting_started/) を確認してください。

## R8 / Proguard

Coil は R8 と完全に互換性があり、追加のルールを追加する必要はありません。

Proguardを使用している場合は、[Coroutines](https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro)、[OkHttp](https://github.com/square/okhttp/blob/master/okhttp/src/jvmMain/resources/META-INF/proguard/okhttp3.pro)にルールを追加する必要があるかもしれません。

## ライセンス

Copyright 2023 Coil Contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.