android - 共享元素转换后 Gif 不播放。滑翔 v 4.8.0
问题描述
GIF 正在列表中播放。但是在共享元素转换之后它会停止。
.diskCacheStrategy(DiskCacheStrategy.ALL)
GlideApp.with(this)
.load(arguments?.getString(EXTRA_IMAGE_URL))
.onlyRetrieveFromCache(true)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
startPostponedEnterTransition()
return false
}
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
startPostponedEnterTransition()
return false
}
})
.into(view.ivDialog)
解决方案
在我的情况下有效的丑陋黑客(在Java中对不起):
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
if (resource instanceof GifDrawable){
final Handler handler = new Handler();
handler.post(() -> resource.setVisible(true, true));
}
return false;
}
});
推荐阅读
- email - PHPMailer - 设置 mailed-by 标头
- java - 是什么让我的输出与预期相差甚远
- sql - 每组的最近日期
- c - OpenGL - (几乎)每帧调用 glBufferSubData 是否有效?
- python - 实时手语检测项目中的 TypeError
- angular - Apple Pay 与 Angular 的集成
- java - 使用可重入读写锁是最快的方法吗?
- html - 如何在移动视图上调整注册表单的宽度以达到我的屏幕边缘?
- c# - 为什么每次发布 UWP 打包项目时 Visual Studio 都会创建新证书?
- ssis - 强制执行逐行提取方法,使用 SSIS 和 Simba ODBC 驱动程序将 BigQuery 转换为 CSV