登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

用Coil方式使用Glide

forJrking   2021-04-12 23:46   收藏

ImageExt 参考Coil对Glide封装实现

主要为ImageView添加扩展函数来简化常见图片加载api

使用方法

allprojects {
	repositories {
		...
		maven { url 'https://www.jitpack.io' }
	}
}
dependencies {
    implementation 'com.github.forJrking:ImageExt:0.0.1'
}
iv_2.loadImage(url, placeHolder = R.color.blue)
//模糊
iv_3.loadBlurImage(url)
//圆形
iv_4.loadCircleImage(url)
//边框
iv_5.loadBorderImage(url, borderWidth = 10, borderColor = Color.RED)
//黑白
iv_6.loadGrayImage(url)
//圆角
iv_7.loadRoundCornerImage(url, radius = 10, type = ImageOptions.CornerType.ALL)
//resize
iv_8.loadResizeImage(url, width = 400, height = 800)
//监听回调结果
iv_9.loadImage(url4, requestListener = {
    onSuccess {
        Toast.makeText(application, R.string.load_success, Toast.LENGTH_LONG).show()
    }
    onFail {
        Toast.makeText(application, R.string.load_failed, Toast.LENGTH_SHORT).show()
    }
})
//终极扩展 参数非常多必须使用可选参数方式调用
iv_8.load(url1) {
    placeHolderResId = R.color.black
    transformation = arrayOf(GrayscaleTransformation())
    progressListener { isComplete, percentage, bytesRead, totalBytes ->
        //加载进度
    }
    requestListener {
        onSuccess {
        }
        onFail {
        }
    }
}
//超长扩展函数 选用建议用上面DSL方式
iv_9.loadImage(load = R.drawable.test, with = MainActivity@ this, 
               placeHolderResId = R.color.black,errorResId = R.color.blue,isAnim = false,
        requestListener = {
           ...
        },
        onProgressListener = {
         ...
        }, transformation = *arrayOf(GrayscaleTransformation())
)

可选扩展函数Api

ImageView.loadImage(...)
ImageView.loadProgressImage(...)
ImageView.loadResizeImage(...)
ImageView.loadGrayImage(...)
ImageView.loadBlurImage(...)
ImageView.loadBlurImage(...)
ImageView.loadRoundCornerImage(...)
ImageView.loadCircleImage(...)
ImageView.loadBorderImage(...)
ImageView.load(load: Any?, options: ImageOptions.() -> Unit)//DSL

//终极扩展函数  选用dsl方式
@JvmOverloads
fun ImageView.loadImage(load: Any?, with: Any? = this,
//占位图 错误图
@DrawableRes placeHolderResId: Int = placeHolderImageView, placeHolderDrawable: Drawable? = null,
@DrawableRes errorResId: Int = placeHolderImageView, errorDrawable: Drawable? = null,
@DrawableRes fallbackResId: Int = placeHolderImageView, fallbackDrawable: Drawable? = null,
//缓存策略等
skipMemoryCache: Boolean = false,
diskCacheStrategy: ImageOptions.DiskCache = ImageOptions.DiskCache.AUTOMATIC,
//优先级
priority: ImageOptions.LoadPriority = ImageOptions.LoadPriority.NORMAL,
//缩略图
thumbnail: Float = 0f, thumbnailUrl: Any? = null,
size: ImageOptions.OverrideSize? = null,
//gif或者动画
isAnim: Boolean = true,
isCrossFade: Boolean = false,
isCircle: Boolean = false,
isGray: Boolean = false,
isFitCenter: Boolean = false,
centerCrop: Boolean = false,
//输出图像像素格式
format: Bitmap.Config? = null,
//边框 一组一起
borderWidth: Int = 0, borderColor: Int = 0,
//模糊处理 一组一起使用
isBlur: Boolean = false, blurRadius: Int = 25, blurSampling: Int = 4,
//圆角 一组一起使用
isRoundedCorners: Boolean = false, roundRadius: Int = 0, cornerType: ImageOptions.CornerType = ImageOptions.CornerType.ALL,
//自定义转换器
vararg transformation: Transformation<Bitmap>,
//进度监听,请求回调监听
onProgressListener: OnProgressListener? = null, requestListener: OnImageListener? = null) {...}

CircleProgressView 仿微博图片加载

就是原封不动来自GlideImageView ,在布局中加入即可,有三种样式可供选择。

<CircleProgressView
 android:id="@+id/progressView"
 android:layout_width="50dp"
 android:layout_height="50dp"
 android:layout_centerInParent="true"
 android:layout_margin="10dp"
 android:progress="0"
 android:visibility="gone"
 app:cpv_progressNormalColor="@color/transparent10"
 app:cpv_progressReachColor="@color/transparent90_white"
 app:cpv_progressStyle="FillInnerArc"
 app:cpv_progressTextColor="@color/red"
 app:cpv_progressTextSize="13sp"
 app:cpv_progressTextVisible="false" />

SelectImageView 仿微信图片点击响应

一个点击可以变为半透明

CircleImageView 圆形头像

一个圆形图片展示控件

项目地址:https://github.com/forJrking/ImageExt