Glide
Glide는 안드로이드에서 이미지를 빠르고 효율적으로 불러올 수 있게 도와주는 라이브러리입니다.
Glide는 사용법이 간단하고 확장성도 넓어서 널리 사용되고 있습니다.
로컬 이미지 뿐만 아니라 네트워크 상의 이미지도 간단하게 불러올 수 있고, gif와 같은 애니메이션 이미지도 불러올 수 있도록 해줍니다.
또한, 비디오 스틸의 로딩, 디코딩, 캐싱 등의 다양한 API를 사용할 수 있습니다.
GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling
An image loading and caching library for Android focused on smooth scrolling - GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling
github.com
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)
'안드로이드 > 활용' 카테고리의 다른 글
[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 |