Glide/Picassoからの移行
Glide/Picassoの呼び出しをCoilの呼び出しに移行する方法のいくつかの例を以下に示します。
基本的な使い方
kotlin
// Glide
Glide.with(context)
.load(url)
.into(imageView)
// Picasso
Picasso.get()
.load(url)
.into(imageView)
// Coil
imageView.load(url)
カスタムリクエスト
kotlin
imageView.scaleType = ImageView.ScaleType.FIT_CENTER
// Glide
Glide.with(context)
.load(url)
.placeholder(placeholder)
.fitCenter()
.into(imageView)
// Picasso
Picasso.get()
.load(url)
.placeholder(placeholder)
.fit()
.into(imageView)
// Coil (スケールタイプを自動検出します)
imageView.load(url) {
placeholder(placeholder)
}
View以外のターゲット
kotlin
// Glide (開始時とエラー時にオプションのコールバックがあります)
Glide.with(context)
.load(url)
.into(object : CustomTarget<Drawable>() {
override fun onResourceReady(resource: Drawable, transition: Transition<Drawable>) {
// 成功した結果を処理します。
}
override fun onLoadCleared(placeholder: Drawable) {
// onResourceReadyで提供されたドロウアブルをビューから削除し、それへの参照が残らないようにします。
}
})
// Picasso
Picasso.get()
.load(url)
.into(object : BitmapTarget {
override fun onBitmapLoaded(bitmap: Bitmap, from: Picasso.LoadedFrom) {
// 成功した結果を処理します。
}
override fun onBitmapFailed(e: Exception, errorDrawable: Drawable?) {
// エラードロウアブルを処理します。
}
override fun onPrepareLoad(placeHolderDrawable: Drawable?) {
// プレースホルダードロウアブルを処理します。
}
})
// Coil
val request = ImageRequest.Builder(context)
.data(url)
.target(
onStart = { placeholder ->
// プレースホルダードロウアブルを処理します。
},
onSuccess = { result ->
// 成功した結果を処理します。
},
onError = { error ->
// エラードロウアブルを処理します。
}
)
.build()
context.imageLoader.enqueue(request)
バックグラウンドスレッド
kotlin
// Glide (現在のスレッドをブロックします。メインスレッドから呼び出してはいけません)
val drawable = Glide.with(context)
.load(url)
.submit(width, height)
.get()
// Picasso (現在のスレッドをブロックします。メインスレッドから呼び出してはいけません)
val drawable = Picasso.get()
.load(url)
.resize(width, height)
.get()
// Coil (中断可能で、ノンブロッキング、スレッドセーフです)
val request = ImageRequest.Builder(context)
.data(url)
.size(width, height)
.build()
val drawable = context.imageLoader.execute(request).drawable