🐛 버그

[Bug / Android] Glide ImageView 깜빡임 해결

콩드로이드 2023. 8. 27. 16:40

🐛  RecyclerView 사용 중, 리스트뷰의 라디오버튼을 클릭할 때마다 리스트 항목들의 이미지뷰가 깜빡이는 현상이 발생

어디서 문제인지 몰라서, 하나씩 체크해봤다

 

1. Recyclerview setHasStableIds

   RecyclerView Adapter에 getItemId 선언 후, id를 선언해준다 

override fun getItemId(position: Int): Long {
    return items[position].id.toLong()
}

   onCreateViewHolder 에서 

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
   setHasStableIds(true)
   //...기존 코드 
}

 

하지만, 위 방법은 imageView만 깜빡일 땐 효과가 없고, 전체가 깜빡일 땐 효과가 있었다

 


 

🔑 2.  Glide 옵션들 확인하기

ImageView에 데이터 세팅 시 , Glide를 사용하고 있었는데 "android glide blink"로 서칭하다가 알게된 사실..!

당시 코드에 transition이 설정이 되어있었는데 이게 문제가 될 수 있었다..! 

자세한 사항은 아래의 문서를 참조 ! 

즉, fade 효과가 주어지면서, ImageView에 이미지가 들어올 때, fade가 활성화되므로 깜빡이게 보였던 것이다..ㅠㅠ 

CrossFade를 삭제하고, dontanimate 옵션을 설정하니 정상작동했다! 

 

[변경전]

    Glide.with(this)
        .load(uri)
        .transition(DrawableTransitionOptions.withCrossFade())
        .into(this)

 

[변경후]

	Glide.with(this)
        .load(uri)
        .dontAnimate()
        .into(this)