[Android] Image Glide

Twaun·2022년 5월 29일
0

Android-Library

목록 보기
4/10
post-thumbnail

What?

안드로이드 이미지 로드 프레임워크이다.

사용 준비

gradle(project)

dependencies {
  implementation 'com.github.bumptech.glide:glide:${version}'
  annotationProcessor 'com.github.bumptech.glide:compiler:${version}'
}

사용

필요한 것 : context / image url / 로드할 view

1. view에 직접 로드

Glide.with(context)
    .load(url)
    .error(url)
    .placeholder(url)
    .centerCrop()
    .listener(object : RequestListener<Drawable> {
                override fun onLoadFailed(
                    e: GlideException?,
                    model: Any?,
                    target: Target<Drawable>?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }

                override fun onResourceReady(
                    resource: Drawable?,
                    model: Any?,
                    target: Target<Drawable>?,
                    dataSource: DataSource?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }
            })
    .into(imageView)

load(url) : url 로드
error(url) : 로드 실패시 보여줄 이미지 url
placeholder(url) : 로드 진행 중 보여줄 이미지 url
centerCrop() : centerCrop(정사각형 만들고 넘어가는 것은 자르는 작업) 외에도 여러가지 가능
listener() : 로드 실패시, 준비 완료시 리스너
into(view) : view에 로드

2. bitmap 만들고 background로 설정(+ Round Corner)

Glide.with(context)
    .asBitmap()
    .centerCrop()
    .load(url)
    .listener(object : RequestListener<Bitmap> {
    	override fun onLoadFailed(
                    e: GlideException?,
                    model: Any?,
                    target: Target<Bitmap>?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }
        override fun onResourceReady(
                    resource: Bitmap?,
                    model: Any?,
                    target: Target<Bitmap>?,
                    dataSource: DataSource?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }
 	})
    .into(object : CustomTarget<Bitmap>() {
    	override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
			view.background = RoundedBitmapDrawableFactory.create(context.resources, resource).apply {
                        cornerRadius = view.width * radiusPercent
                    }
        }
		override fun onLoadCleared(placeholder: Drawable?) {}
	})
    
profile
Android Developer

0개의 댓글