Java互換性
CoilのAPIはKotlinファーストで設計されています。Kotlinのインラインラムダ、レシーバーパラメータ、デフォルト引数、拡張関数といったJavaでは利用できない言語機能を活用しています。
重要な点として、サスペンド関数はJavaでは実装できません。これは、カスタムのTransformations、Size Resolvers、Fetchers、およびDecodersがKotlinでのみ実装可能であることを意味します。
これらの制限があるにもかかわらず、CoilのAPIのほとんどはJavaと互換性があります。シングルトンImageLoaderは次のようにして取得できます。
java
ImageLoader imageLoader = SingletonImageLoader.get(context);ImageRequestをエンキューする構文は、JavaとKotlinでほとんど同じです。
java
ImageRequest request = new ImageRequest.Builder(context)
.data("https://example.com/image.jpg")
.crossfade(true)
.target(new ImageViewTarget(imageView))
.build();
imageLoader.enqueue(request);::: Note ImageView.loadはJavaからは使用できません。代わりにImageRequest.Builder APIを使用してください。
::: suspend関数はJavaから簡単に呼び出すことはできません。したがって、画像を同期的に取得するには、Javaから次のように呼び出せるImageLoader.executeBlocking拡張関数を使用する必要があります。
java
ImageRequest request = new ImageRequest.Builder(context)
.data("https://example.com/image.jpg")
.size(1080, 1920)
.build();
Drawable drawable = ImageLoaders.executeBlocking(imageLoader, request).getImage().asDrawable(context.resources);::: Note ImageLoaders.executeBlockingは、サスペンドする代わりに現在のスレッドをブロックします。これをメインスレッドから呼び出さないでください。 :::
