코틀린으로 작성한 안드로이드 glide 라이브러리 사용해보기

오늘은 안드로이드 라이브러리인 glide를 코틀린 확장 함수로 작성해서 사용해보려 합니다.

추가로 바인딩 어댑터로도 실습해보려 합니다.

설정

implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'

glide 라이브러리를 gradle에 추가해줍니다.

확장 함수

fun ImageView.loadBitmap(image: Bitmap?) {
        Glide.with(this).load(imageUrl).into(this)
    }

이와 같이 ImageView에 loadBitmap라는 확장 함수를 추가해놓는다면, findviewbyid를 해서 찾던지 Data bind를 해서 해당 ImageView 객체에서 바로 온점(.)을 찍고 직접 만든 함수를 쓸 수 있습니다.

fun ImageView.loadUrl(imageUrl: String?) {
        Glide.with(this).load(imageUrl).into(this)
    }

마찬가지로 String타입의 url도 가능합니다.

바인딩 어댑터

@BindingAdapter("setBitmap")
fun setBitmap(view: ImageView,bitmap:Bitmap?){
    bitmap?.let {
        Glide.with(view.context).load(bitmap).into(view)
    }
}

바인딩 어댑터로 바꿔서 적용하면 방금 만든 메소드의 내용에서 this를 ImageView 타입의 view의 context로 넣어주면 됩니다.

xml

<data>
    <variable
        name="bitmap"
        type="android.graphics.Bitmap"/>
</data>

바인딩 어댑터를 사용한다면 data 태그에 Bitmap 타입의 변수를 만들어주어야 합니다.

<ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="parent"
        app:setBitmap="@{bitmap}"/>

아까 만든 바인딩 어댑터와 변수를 준비해서 ImageView를 만들 때 속성으로 넣어주면 됩니다.

소개는 확장함수와 바인딩 어댑터 두개 다 했지만, 실제로 코드에서는 하나만 선택하여 작성하면 됩니다.

Written on August 10, 2018