当前位置: 首页 > 知识库问答 >
问题:

使用Glide完成GIF加载后打开活动

韦欣德
2023-03-14

我正在使用Glide在启动屏幕中加载GIF图像。GIF加载完成后,我想使用Intent打开下一个活动。

我尝试了以下代码

Glide.with(this).load(R.drawable.image1).override(width, height).into(imageViewTarget);

和Glide版本:com.github.bumptech.Glide:Glide:3.7.0'

但是找不到任何帮助,请帮助解决这个问题。

共有3个答案

常英纵
2023-03-14

在我看来,您想要的是在GIF动画完成时启动另一个活动,而不是将GIF加载到您的ImageView中。在这种情况下,最好测量完成gif动画所需的时间,并将其设置为局部变量。为了确保gif动画完整,最好使时间比动画成本长一点。然后像这样做。

long gifAnimationTime = 1000;// A bit more than the gif animation,you can ajust this to your situation.
Glide.with(this)
        .load(R.drawable.image1)
        .listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        // start your activity here.
                    }
                }, gifAnimationTime);
                return false;
            }
        })
        .into(imageViewTarget);    

我有新东西。试试这个:

    Movie movie = Movie.decodeByteArray(gifdata,offset,length);
    long period = movie.duration();
轩辕佑运
2023-03-14

让listner来处理这个。。

     Glide.with(this)
    .load(R.drawable.image1)
    .asGif()
    .override(width, height)
                 .listener(new RequestListener<String, GlideDrawable>() {
                                    @Override
                                    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                                        return false;
                                    }

                                    @Override
                                    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                                       //AFTER LOAD OUT YOUR LOGIC
                                      //open next activity
                                        return false;
                                    }
                                })
     .into(imageViewTarget);

并确保您的imageview始终可见。希望这有帮助。。

骆雅昶
2023-03-14

我花了几个小时试图为Glide V4找到一个解决方案,这就是我最终遇到的,它工作得很完美。https://github.com/bumptech/glide/pull/3438

        @Override
        public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
            resource.setLoopCount(1);
            resource.registerAnimationCallback(new Animatable2Compat.AnimationCallback() {
                @Override
                public void onAnimationEnd(Drawable drawable) {
                    //in your case start new Activity
                }
            });
            return false;
        }
    }).into(imageView);
 类似资料:
  • 我正在使用Glide在我的中加载GIF。 图像来自服务器,具有高分辨率和大量帧。 我注意到,一旦加载和播放GIF,内存使用率很高,可能导致内存不足。 我尝试了以下Glide方法(),但内存使用率没有改变。 Glide中还有其他可以使用的方法吗?

  • 我正在尝试使用Glide库将gif加载到ImageView中。Gif图像位于Raw文件夹中。代码如下: 但它没有加载。我错过什么了吗?它没有给出失败的日志。

  • 我尝试在图像视图中显示GIF图像作为加载占位符-使用Glide Library: 我试图显示此文件 加载2.gif 但是得到这个错误: 错误:(54,86)错误:找不到符号方法asGif() 如何在imageView中使用Glide显示GIF文件?

  • 我有一个应用程序,当用户打开指向图像的链接时,不是打开浏览器,而是在服务中创建一个浮动的图像视图,并显示在所有其他应用程序之上(需要android.permission.SYSTEM\u ALERT\u窗口的权限)。这里是应用程序的链接:Tappic。 我想使用Glide添加动画GIF支持(我也尝试过其他库,但结果总是一样),但只显示GIF的前几帧,然后停止。 下面是我在服务中加载图像的代码: 您

  • 我第一次使用Glide在ImageView中显示GIF。我已经按照几个站点的方式对其进行了编码。但它不起作用。我已经给出了以下所有代码:(如果我弄错了什么,请告诉我) 项目级build.gradle 应用程序级构建。gradle文件: activity_main.xml 活动Java代码: 单击“提交”按钮后,我没有看到GIF图像。

  • 问题内容: 我是python的新手:我的目标是在while循环后打印完成的语句,但它给了我语法错误 我正在尝试在python中复制相同的php程序 我试过了 仍然失败,不能在结束后使用打印,还是必须等待一段时间才能完成打印 问题答案: 如果看到’>>>’,则表示您 未在编写程序 。您正在使用口译员。您一次输入一个语句。 如果要编写程序,请将其保存在扩展名为.py的纯文本文件中。您应该能够通过双击它