欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Glide加载gif动画只播放一次的方法 Glide加载gif动画先显示最后一帧再开始播放动画导致闪屏的解决方案

程序员文章站 2024-03-25 12:12:22
...

场景:
Android App利用ViewPager制作引导页,然后利用Glide加载gif动画。

问题:
1.Glide加载gif动画如何只播放一次?
2.Glide加载gif动画,在viewPager切换的时候,总是先显示最后一帧,才开始播放动画,导致闪屏看着很不舒服,该如何解决?

解决方案:
1.Glide加载gif动画只播放一次的解决方案:只需要给Glide设置.listener方法,然后再onResourceReady方法中,通过 resource.setLoopCount(1)设置播放次数。

 options = new RequestOptions().skipMemoryCache(true);//配置
                
 GlideApp.with(mContext).asGif()
 .apply(options)//应用配置
                .load(R.drawable.guide_one)
                .listener(new RequestListener<GifDrawable>() {//添加监听,设置播放次数
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
                        if (resource instanceof GifDrawable) {
                            resource.setLoopCount(1);//只播放一次
                        }
                        return false;
                    }
                })
                .into(ivGuideOne);

2.Glide加载gif动画,切换页面的时候先显示最后一帧再开始播放动画的问题解决方案。设置Glide禁止使用内存缓存即可。

如果在切换的过程中不限让左右的页面显示出来,可以设置左右页面的图片为透明,切换后再重新加载gif图片即可。

 //禁止Glide缓存gif图片,否则会导致每次切换页面会先显示gif图片最后一帧,然后才开始播放动画
        options = new RequestOptions()
                .skipMemoryCache(true);