Skip to content

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)
}

뷰가 아닌 타겟

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에서 제공된 드로어블을 모든 View에서 제거하고 참조가 남아있지 않도록 합니다.
        }
    })

// 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 (정지(suspends)되며, 논블로킹(non-blocking)이고, 스레드 안전(thread safe)합니다)
val request = ImageRequest.Builder(context)
    .data(url)
    .size(width, height)
    .build()
val drawable = context.imageLoader.execute(request).drawable