Android 日常封装之暴力ImageLoader图片加载

/**
 * @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())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值