package cl.monsoon.s1next.binding; import android.databinding.BindingAdapter; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import cl.monsoon.s1next.util.TransformationUtil; import cl.monsoon.s1next.widget.PhotoView; public final class PhotoViewBindingAdapter { private PhotoViewBindingAdapter() {} @BindingAdapter("url") public static void loadImage(PhotoView photoView, String url) { photoView.setMaxInitialScaleFactor(1); photoView.enableImageTransforms(true); Glide.with(photoView.getContext()) .load(url) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .transform(new TransformationUtil.GlMaxTextureSizeBitmapTransformation( photoView.getContext())) .into(new SimpleTarget<GlideDrawable>() { @Override public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { photoView.bindDrawable(resource); // start animation if this image is a GIF if (resource.isAnimated()) { resource.setLoopCount(GlideDrawable.LOOP_FOREVER); resource.start(); } } }); } }