기술적용

Glide 구현

131 developer 2022. 6. 3. 20:20

 

 

1. gradle 추가

build.gradle

dependencies {
    ...
    implementation 'com.github.bumptech.glide:glide:4.12.0' // 이미지로딩 라이브러리
}

 

 

Glide 적용

object CommonBindingAdapters{
	@BindingAdapter("app:imageUrl","app:placeholder")
	@JvmStatic fun loadImage(imageView: ImageView, url: String, placeholder: Drawable){
        Glide.with(imageView.context)
            .load(url)
            .placeholder(placeholder)
            .error(placeholder)
            .diskCacheStrategy(DiskCacheStrategy.NONE)
            .apply(RequestOptions().fitCenter())
            .into(imageView)
    }
}

 

.load(url)   :  불러올 이미지 

.placeholder(defaultImage)   : 이미지 로딩 시작하기 전 표시할 이미지 

.error(defaultImage)   : 로딩 에러 발생 시 표시할 이미지 

.fallback(defaultImage)   : 로드할 url 이 비어있을(null 등) 경우 표시할 이미지 

.circleCrop()   : 동그랗게 자르기 

.into(imageView)   : 이미지를 넣을 뷰

.diskCacheStrategy()  : 불러온 이미지를 디스크 캐시에 저장할지 여부를 지정

 

 

xml

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    >
    <data>
        <variable
            name="item"
            type="com.danggai.app.bindingAdapterSample.item.SampleItem"
            />
    </data>
    
    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.appcompat.widget.AppCompatImageView
			android:id="@+id/iv_image2"
			android:scaleType="fitXY"
			app:imageUrl="@{item.img_url}"
			app:placeholder="@{@drawable/icon_placeholder}"
			app:layout_constraintBottom_toBottomOf="parent"
			app:layout_constraintLeft_toLeftOf="parent"
			app:layout_constraintRight_toRightOf="parent"
			app:layout_constraintTop_toTopOf="parent"
			/>
        
    </android.support.constraint.ConstraintLayout>
</layout>