✨
Glideでapngを扱うには
結論: このライブラリを使う。
自前で実装するみたいな記事を期待していた方ごめんなさい・・
build.gradleを書き換えるだけで簡単に導入することができました。
注意点としてCustomTargetで型スイッチでGifDrawableの判定をしている場合
一部ファイルがGlide系のDrawableからpenfeizhou/APNG4Androidのものに変わることがあるので
注意が必要です。
val target = object : CustomTarget<Drawable>(){
override fun onResourceReady(
resource: Drawable,
transition: Transition<in Drawable>?
) {
imageDrawable = resource
imageDrawable?.callback = Animated()
when (resource) {
is GifDrawable -> {
resource.start()
}
is APNGDrawable -> {
resource.start()
}
is com.github.penfeizhou.animation.gif.GifDrawable -> {
resource.start()
}
else -> {
adapter.throttleUpdate()
}
}
}
override fun onLoadCleared(placeholder: Drawable?) {
}
}
またAPNG4AndroidのGlide版はGifやWebMもオリジナルのものに置き換えられてしまいます。
APNG以外Glideオリジナルのものを使用したい場合はこちらの記事をご覧ください
Discussion