Glide
Glide는 안드로이드에서 이미지를 빠르고 효율적으로 불러올 수 있게 도와주는 라이브러리입니다.
Glide는 사용법이 간단하고 확장성도 넓어서 널리 사용되고 있습니다.
로컬 이미지 뿐만 아니라 네트워크 상의 이미지도 간단하게 불러올 수 있고, gif와 같은 애니메이션 이미지도 불러올 수 있도록 해줍니다.
또한, 비디오 스틸의 로딩, 디코딩, 캐싱 등의 다양한 API를 사용할 수 있습니다.
Glide 구현하기
1. Manifest에 권한 선언
Glide를 사용하기 위해서 인터넷에 대한 권한을 추가합니다.
<uses-permission android:name="android.permission.INTERNET" />
2. build.gradle에 의존성 추가
Glide를 사용하기 위해서 build.gradle에 Glide 라이브러리를 추가합니다.
implementation 'com.github.bumptech.glide:glide:4.16.0'
3. 뷰에 이미지 로드하기
특별한 옵션 없이 단순히 뷰에 이미지를 넣는 것이라면 with(), load(), into() 만으로도 표현할 수 있습니다.
// Activity에서 사용할 경우
Glide.with(context)
.load(이미지 경로)
.into(imageView)
// ViewHolder에서 사용할 경우
Glide.with(itemView)
.load(이미지 경로)
.into(itemView 안의 imageView)
- with() : View, Fragment 혹은 Activity로부터 Context를 가져옵니다.
- load() : 이미지를 로드합니다. 다양한 방법으로 이미지를 불러올 수 있습니다. (Bitmap, Drawable, String, Uri, File, ResourId(Int), ByteArray)
- into() : 이미지를 보여줄 View를 지정합니다.
Glide는 단순히 로딩만 도와주는 것이 아니라, 에러 상황이 발생하거나 후가공이 필요할 때에 손쉽게 처리할 수 있도록 다양한 함수를 제공합니다.
Glide.with(context)
.load(이미지 경로)
.placeholder(로딩하는 동안 보여줄 이미지)
.fallback(이미지 경로가 null인 경우 보여줄 이미지)
.error(에러 시 보여줄 이미지)
.thumbnail(설정한 비율 또는 저해상도 이미지 강제 로드)
.into(imageView)
- placeholder() : 이미지 로딩을 하는 동안에 보여줄 이미지를 설정합니다. 요청한 이미지를 정상적으로 가져오면 해당 이미지로 대체되고 그렇지 않으면 여기서 설정한 이미지가 계속 표시됩니다.
- fallback() : 이미지 URL이 null인 경우 등 비어있을 때 보여줄 이미지를 설정합니다. 해당 함수를 사용하지 않으면 error()에서 처리합니다.
- error() : 이미지를 불러오다가 에러가 발생했을 때 보여줄 이미지를 설정합니다.
- thumbnail() : 지정한 비율만큼만 이미지를 가져와서 보여주거나 저해상도 이미지를 강제로 표시합니다. 파라미터에 0,1F로 지정하면 10% 비율로 가져와서 흐릿하게 보여줍니다. (0F ~ 1F)
또한, Glide에서는 이미지의 URL을 이용해 비트맵으로 변환해서 사용할 때 기본적으로 메모리와 디스크에 캐싱을 합니다.
Glide.with(context).asBitmap()
.load(이미지 경로)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.transform(RoundedCorners(크기))
.override(크기)
.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 {
resource?.let {
runOnUiThread {
// 수행할 동작 정의
}
}
return true
}
}).submit()
- skipMemoryCache() : 메모리에 캐싱하지 않으려면 true로 설정합니다.
- diskCacheStrategy() : 디스크에 캐싱하지 않으려면 DiskCacheStrategy.NONE으로 설정합니다. (ALL, AUTOMATIC, DATA, NONE, RESOURCE)
4. 뷰에 GIF 이미지 로드하기
움직이는 gif 이미지를 불러오고 싶다면 asGif()를 사용하면 됩니다.
Glide.with(context)
.load(이미지 경로)
.asGif()
.into(imageView)
728x90
반응형
'안드로이드 > 활용' 카테고리의 다른 글
[Android] Firebase (0) | 2023.08.29 |
---|---|
[Android] Lottie 사용하기 (0) | 2023.08.22 |
[Android] Jsoup으로 HTML 파싱하기 (0) | 2023.08.21 |
[Android] Tikxml로 XML 파싱하기 (0) | 2023.08.20 |
[Android] Retrofit 사용하기 (0) | 2023.08.18 |