Skip to content

Commit

Permalink
feat: 둥근 모서리의 이미지를 로드하는 BindingAdapters 추가 #58 (#59)
Browse files Browse the repository at this point in the history
* feat: 둥근 모서리로 이미지를 로딩하는 Glide 바인딩 어댑터 작성

- 세 속성이 모두 필요하다.
- glideRoundedCornerImageUrl: 출력하고자 하는 이미지 url
- glidePlaceHolder: placeHolder의 url
- glideRoundingRadius: 모서리의 둥근 정도를 Int로 설정

* feat: 둥근 모서리로 이미지를 로딩하는 Coil 바인딩 어댑터 작성

- 세 속성이 모두 필요하다.
- coilRoundedCornerImageUrl: 출력하고자 하는 이미지 url
- coilPlaceHolder: placeHolder의 url
- coilRoundingRadius: 모서리의 둥근 정도를 Float으로 설정

* fix: centerCrop 설정을 BindingAdapter 에 위임

- xml 속성으로 centerCrop을 주게 되면 Round Corner가 제대로 적용되지 않는 현상 발생
- Glide의 api로 제공되는 centerCrop() 메서드를 활용
  • Loading branch information
Junyoung-WON authored Jul 25, 2024
1 parent 35985e8 commit df877a4
Showing 1 changed file with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import androidx.databinding.BindingAdapter
import coil.load
import coil.transform.RoundedCornersTransformation
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions

@BindingAdapter(
value = ["coilImageUrl", "coilPlaceHolder"],
Expand Down Expand Up @@ -34,6 +36,21 @@ fun ImageView.setCircleImageWithCoil(
}
}

@BindingAdapter(
value = ["coilRoundedCornerImageUrl", "coilPlaceHolder", "coilRoundingRadius"],
)
fun ImageView.setRoundedCornerImageWithCoil(
url: String?,
placeHolder: Drawable? = null,
roundingRadius: Float,
) {
load(url) {
placeholder(placeHolder)
transformations(RoundedCornersTransformation(roundingRadius))
error(placeHolder)
}
}

@BindingAdapter(
value = ["glideImageUrl", "glidePlaceHolder"],
)
Expand All @@ -44,6 +61,7 @@ fun ImageView.loadImageWithGlide(
Glide.with(context)
.load(url)
.placeholder(placeHolder)
.centerCrop()
.error(placeHolder)
.into(this)
}
Expand All @@ -62,3 +80,20 @@ fun ImageView.setCircleImageWithGlide(
.error(placeHolder)
.into(this)
}

@BindingAdapter(
value = ["glideRoundedCornerImageUrl", "glidePlaceHolder", "glideRoundingRadius"],
)
fun ImageView.setRoundedCornerImageWithGlide(
url: String?,
placeHolder: Drawable? = null,
roundingRadius: Int,
) {
Glide.with(context)
.load(url)
.placeholder(placeHolder)
.centerCrop()
.apply(RequestOptions.bitmapTransform(RoundedCorners(roundingRadius)))
.error(placeHolder)
.into(this)
}

0 comments on commit df877a4

Please sign in to comment.