/** * @author Created by qlang on 2017/9/7. */ public class ImageLoader { public interface BitmapListener { void onCall(Bitmap bitmap); } public static <T extends ImageView> void loadImg(Context context, String id, byte[] bytes, T imageView) { if (null == imageView) return; Glide.with(context).load(bytes, id) .diskCacheStrategy(DiskCacheStrategy.ALL) .dontAnimate() .into(imageView); } public static <T extends ImageView> void loadImg(Context context, String url, T imageView) { Glide.with(context).load(url) .diskCacheStrategy(DiskCacheStrategy.ALL) .dontAnimate() .into(imageView); } public static <T extends ImageView> void loadImg(Context context, String url, T imageView, int defaultImageResId, int errImageResId) { Glide.with(context).load(url) .diskCacheStrategy(DiskCacheStrategy.ALL) .placeholder(defaultImageResId) .error(errImageResId) .crossFade() .into(imageView); } public static void loadImg(Context context, String url, final BitmapListener listener) { Glide.with(context).load(url) .asBitmap() .format(DecodeFormat.PREFER_ARGB_8888) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { if (null != listener) listener.onCall(resource); } }); } }
kotlin版
/** * @author Created by qlang on 2017/7/19. */ class ImageLoader { interface BitmapListener { fun onCall(bitmap: Bitmap?) } companion object { fun <T : ImageView> loadImg(context: Context, id: String, bytes: ByteArray, imageView: T?) { if (null == imageView) return Glide.with(context).load(bytes, id) .diskCacheStrategy(DiskCacheStrategy.ALL) .dontAnimate() .into(imageView) } fun <T : ImageView> loadImg(context: Context, url: String, imageView: T?) { loadImg(context, url, imageView, R.mipmap.ic_default_img, R.mipmap.ic_default_img) } fun <T : ImageView> loadBigImg(context: Context, url: String, imageView: T?) { imageView ?: return Glide.with(context).load(url) .asBitmap() .format(DecodeFormat.PREFER_ARGB_8888) .diskCacheStrategy(DiskCacheStrategy.ALL) .placeholder(R.mipmap.ic_default_img) .error(R.mipmap.ic_default_img) .into(imageView) } fun <T : ImageView> loadImg(context: Context, url: String, imageView: T?, defaultImageResId: Int, errImageResId: Int) { imageView ?: return Glide.with(context).load(url) .diskCacheStrategy(DiskCacheStrategy.ALL) .placeholder(defaultImageResId) .error(errImageResId) // .dontAnimate() .crossFade().into(imageView) } fun loadImg(context: Context, url: String, listener: (Bitmap?) -> Unit) { Glide.with(context).load(url) .asBitmap() .format(DecodeFormat.PREFER_ARGB_8888) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(object : SimpleTarget<Bitmap>() { override fun onResourceReady(resource: Bitmap?, glideAnimation: GlideAnimation<in Bitmap>?) { listener(resource) } }) } fun loadImg(context: Context, url: String, listener: BitmapListener?) { Glide.with(context).load(url) .asBitmap() .format(DecodeFormat.PREFER_ARGB_8888) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(object : SimpleTarget<Bitmap>() { override fun onResourceReady(resource: Bitmap?, glideAnimation: GlideAnimation<in Bitmap>?) { listener?.onCall(resource) } }) } } } fun ImageView.loadImg(url: String, defImgId: Int = R.mipmap.ic_default_img, errImgId: Int = R.mipmap.ic_default_img) = ImageLoader.loadImg(this.context, url, this, defImgId, errImgId) fun ImageView.loadImg(id: String, bytes: ByteArray) = ImageLoader.loadImg(this.context, id, bytes, this) fun ImageView.loadImg(block: () -> Bitmap?) = this.setImageBitmap(block())