我正在使用Glide在启动画面中加载GIF图像。 完成GIF加载后,我想使用Intent打开下一个活动。
我尝试了下面的代码,
Glide.with(this).load(R.drawable.image1).override(width, height).into(imageViewTarget);
和滑翔版:com.github.bumptech.glide:滑翔:3.7.0'
但是无法找到任何帮助,请帮助解决这个问题。
答案 0 :(得分:1)
让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始终可见。 希望这会有所帮助..
答案 1 :(得分:1)
从我的角度来看,你想要的是当 GIF动画完成而不是gif加载到你的ImageView时开始另一个活动。 在这种情况下,您可以更好地衡量完成gif动画所需的时间并使其成为局部变量。为了确保gif动画完整,最好将时间设为a比动画费用长一点。 然后就这样做。
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();
答案 2 :(得分:1)
仅花了几个小时,试图为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);