package ren.solid.library.imageloader; import android.content.Context; import com.bumptech.glide.Glide; import com.bumptech.glide.Priority; import com.bumptech.glide.load.data.DataFetcher; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.model.stream.StreamModelLoader; import java.io.IOException; import java.io.InputStream; import ren.solid.library.R; import ren.solid.library.SettingCenter; import ren.solid.library.utils.NetworkUtil; /** * Created by _SOLID * Date:2016/5/13 * Time:10:27 */ public class GlideImageLoaderProvider implements IImageLoaderProvider { @Override public void loadImage(ImageRequest request) { Context context = request.getImageView().getContext(); if (!SettingCenter.getOnlyWifiLoadImage()) { loadNormal(context, request); } else { if (NetworkUtil.isWifiConnected(context)) { loadNormal(context, request); } else { loadCache(context, request); } } } private void loadNormal(Context ctx, ImageRequest img) { Glide.with(ctx) .load(img.getUrl()) .placeholder(img.getPlaceHolder()) .error(img.getError()) .animate(R.anim.fade_in) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(img.getImageView()); } private void loadCache(Context ctx, ImageRequest img) { Glide.with(ctx) .using(new StreamModelLoader<String>() { @Override public DataFetcher<InputStream> getResourceFetcher(final String model, int i, int i1) { return new DataFetcher<InputStream>() { @Override public InputStream loadData(Priority priority) throws Exception { throw new IOException(); } @Override public void cleanup() { } @Override public String getId() { return model; } @Override public void cancel() { } }; } }) .load(img.getUrl()) .placeholder(img.getPlaceHolder()) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .animate(R.anim.fade_in) .into(img.getImageView()); } }