1 回答

TA貢獻1785條經(jīng)驗 獲得超8個贊
我找到了解決問題的方法,事實證明我們可以在資源加載后訪問 GIF 動畫的幀。在 running 中使用此信息Thread,我不僅能夠聽到動畫的結(jié)束/開始,而且還能根據(jù)動畫幀非常精確地調(diào)整時間。
這是我的工作代碼Kotlin(其中Java非常相似):
GlideApp.with(getContext())
.asGif()
.load(R.raw. my_gif_animation)
.apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.NONE))
.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 {
myThread = Thread(Runnable {
while (true) {
if (resource?.isRunning == true) {
if (resource.frameIndex == 10).toInt()) {
// This code will be executed every time the 10th frame of the GIF animation is played..
}
if (Thread.interrupted()) break
}
}
})
myThread?.start()
return false
}
})
.into(this)
添加回答
舉報