- 앱에서 활용하던 GIF 파일들이 많아지면서 용량이 증가하고 관리 비용에도 점점 문제가 생기기 시작했습니다.
- 이에 따라 애니메이션 재생에도 뒤처지지 않고, 용량도 더 적은 WebP 파일을 활용하기로 결정했습니다.
- Glide를 활용해 렌더링을 진행했는데, 사실 기존 GIF 파일 재생 방법과 큰 차이가 없습니다. 같은 로직으로 두 가지 종류 파일 모두 호환 가능합니다.
- WebP가 GIF보다 나은 점들은 아래와 같습니다.

- raw 폴더 하위에 webp 파일을 넣고, Uri 경로를 구성해주어야합니다.
val resourceUri = Uri.parse("android.resource://${context.packageName}/${R.raw.test}")
- 해당 Uri 기반으로 로드해 줍니다. url 통신을 기반으로 할 때는 load()에 바로 해당 Webp Url 삽입해 주시면 됩니다.
Glide.with(context).load(resourceUri)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable>?,
isFirstResource: Boolean
): Boolean {
return false
}
override fun onResourceReady(
resource: Drawable?,
model: Any?,
target: Target<Drawable>?,
dataSource: DataSource?,
isFirstResource: Boolean
): Boolean {
return false
}
})
.into(imageView)
- 앱에서 활용하던 GIF 파일들이 많아지면서 용량이 증가하고 관리 비용에도 점점 문제가 생기기 시작했습니다.
- 이에 따라 애니메이션 재생에도 뒤처지지 않고, 용량도 더 적은 WebP 파일을 활용하기로 결정했습니다.
- Glide를 활용해 렌더링을 진행했는데, 사실 기존 GIF 파일 재생 방법과 큰 차이가 없습니다. 같은 로직으로 두 가지 종류 파일 모두 호환 가능합니다.
- WebP가 GIF보다 나은 점들은 아래와 같습니다.

- raw 폴더 하위에 webp 파일을 넣고, Uri 경로를 구성해주어야합니다.
val resourceUri = Uri.parse("android.resource://${context.packageName}/${R.raw.test}")
- 해당 Uri 기반으로 로드해 줍니다. url 통신을 기반으로 할 때는 load()에 바로 해당 Webp Url 삽입해 주시면 됩니다.
Glide.with(context).load(resourceUri)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable>?,
isFirstResource: Boolean
): Boolean {
return false
}
override fun onResourceReady(
resource: Drawable?,
model: Any?,
target: Target<Drawable>?,
dataSource: DataSource?,
isFirstResource: Boolean
): Boolean {
return false
}
})
.into(imageView)