Android 在glide中停止gif解码
我正在使用glide在我的android项目中加载gif。Android 在glide中停止gif解码,android,gif,android-glide,Android,Gif,Android Glide,我正在使用glide在我的android项目中加载gif。 Glide.with(getActivity()).load(mainDrawable).asGif()加载到(mainDrawableView)中 这使gif保持重复,如何阻止gif循环?有一个解决方案,可以在onResourceReady()方法中添加请求侦听器并停止动画。 然而,这对我不起作用。可能是因为在我的例子中,资源是本地的。最后,我找到了以下不错的解决方法: 使用Gimp或Photoshop从Gif导出静态图像。要停止动画
Glide.with(getActivity()).load(mainDrawable).asGif()加载到(mainDrawableView)中代码>
这使gif保持重复,如何阻止gif循环?有一个解决方案,可以在onResourceReady()方法中添加请求侦听器并停止动画。
然而,这对我不起作用。可能是因为在我的例子中,资源是本地的。最后,我找到了以下不错的解决方法:
使用Gimp或Photoshop从Gif导出静态图像。要停止动画时,请将静止图像加载到ImageView中。要显示动画时,请加载原始Gif。当然,这种解决方法仅适用于小型和本地文件。在RequestListener内部的GifDrawable中设置LoopCount
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;
}
};
}
导入静态com.bumptech.glide.load.resource.gif.gifdravable.LOOP\u;
Glide.with(context.asGif().listener(getRequest()).load(R.raw.gif_capture).into(imgProgress);
公共请求侦听器getRequest(){
返回新的RequestListener(){
@凌驾
public boolean onload失败(@Nullable glide,对象模型,目标,boolean isFirstResource){
返回false;
}
@凌驾
public boolean onResourceReady(GifDrawable资源、对象模型、目标、数据源DataSource、boolean isFirstResource){
resource.setLoopCount(循环_内在);
返回false;
}
};
}
这对我来说很有用。滑翔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);
Glide.with(this).asGif(){
@凌驾
public boolean onload失败(@Nullable glide,对象模型,目标,boolean isFirstResource){
返回false;
}
@凌驾
public boolean onResourceReady(GifDrawable资源、对象模型、目标、数据源DataSource、boolean isFirstResource){
资源。setLoopCount(1);
resource.registerAnimationCallback(新的Animatable2Compat.AnimationCallback(){
@凌驾
AnimationEnd上的公共空白(可提取){
//完成指定数量的循环后执行任何操作
}
});
返回false;
}}).进入(图像视图);