首页 > 解决方案 > 共享元素转换后 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)

标签: androidkotlinandroid-animationandroid-transitions

解决方案


在我的情况下有效的丑陋黑客(在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;
        }
      });

推荐阅读