Я использую glide для загрузки gif в свой проект Android. Glide.with(getActivity()).load(mainDrawable).asGif().into(mainDrawableView);
Это удерживает GIF на повторе, как можно остановить зацикливание GIF?
Я использую glide для загрузки gif в свой проект Android. Glide.with(getActivity()).load(mainDrawable).asGif().into(mainDrawableView);
Это удерживает GIF на повторе, как можно остановить зацикливание GIF?
Это то, что сработало для меня. Скольжение V4
Glide.with(this).asGif().load(/*your gif url*/).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) {
resource.setLoopCount(1);
resource.registerAnimationCallback(new Animatable2Compat.AnimationCallback() {
@Override
public void onAnimationEnd(Drawable drawable) {
//do whatever after specified number of loops complete
}
});
return false;
}}).into(imageView);
В сообщении Github есть решение, позволяющее добавить прослушиватель запросов и остановить анимацию в методе onResourceReady(). .
Однако мне это не помогло. Может быть потому, что в моем случае ресурс был локальным. В итоге я нашел следующий не такой уж плохой обходной путь:
Экспортируйте неподвижное изображение из Gif с помощью Gimp или Photoshop. Загрузите неподвижное изображение в ImageView, если хотите остановить анимацию. Загрузите оригинальный Gif, когда хотите показать анимацию. Конечно, этот обходной путь подходит только для небольших и локальных файлов.
setLoopCount в GifDrawable внутри RequestListener
import static com.bumptech.glide.load.resource.gif.GifDrawable.LOOP_INTRINSIC;
Glide.with(context).asGif().listener(getRequest()).load(R.raw.gif_capture).into(imgProgress);
public RequestListener<GifDrawable> getRequest() {
return 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) {
resource.setLoopCount(LOOP_INTRINSIC);
return false;
}
};
}