안드로이드

[Android] Glide를 통해 이모티콘 Gif 구현하기

코딩하는후운 2024. 6. 14. 18:02
반응형

Glide를 통해 Gif를 보여주는데

  1. 이모티콘 바텀시트에서는 Gif가 움직이면 안됌
  2. 이모티콘 클릭시 정해진 횟수로 Gif 움직여야함
  3. 디스크 캐싱을 하는데 이미지가 변경되거나 하면 새로운거 보여주고 다시 캐싱 해야함.

이러한 요구 사항을 작업 하려고 한다.

1.  Gif 움직이지 않게 하기

Glide.with(activity)
    .asBitmap()
    .load(R.drawable.gif_rain)
    .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.AUTOMATIC))
    .into(ivEmoticon)

asBitMap()으로 움직이지 않게 한다.

 

2. 정해진 횟수로 Gif 움직이기

Glide.with(activity)
      .asGif()
      .load(R.drawable.gif_rain)
      .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.AUTOMATIC))
      .listener(
          object : RequestListener<GifDrawable> {
              override fun onLoadFailed(
                  e: GlideException?,
                  model: Any?,
                  target: Target<GifDrawable>?,
                  isFirstResource: Boolean
              ): Boolean {
                  return false
              }

              override fun onResourceReady(
                  resource: GifDrawable?,
                  model: Any?,
                  target: Target<GifDrawable>?,
                  dataSource: DataSource?,
                  isFirstResource: Boolean
              ): Boolean {
                  resource?.setLoopCount(3)
                  return false
              }
          }

      )
      .into(ivEmoticon)

listeneronResourceReady 이미지가 준비되면 LoopCount를 지정해준다.

 

3. 디스크 캐싱을 하는데 이미지가 변경되거나 하면 새로운거 보여주고 다시 캐싱

Glide.with(activity)
    .asBitmap()
    .load(R.drawable.gif_rain)
    .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
    .signature(ObjectKey("지정할 키"))
    .into(ivEmoticon)

signature를 설정하여 이미지 link + signature키를 쌍으로 하여 다를 경우 다시 캐싱한다고 한다.
- 이 부분은 실제 확인 해보진 못했다.(작업 해봐야 함)

반응형