Glide 使用Transformation 时保持 placeholder、error统一的一种方式

Glide加载图片遇到的问题

有时候我们碰到某个需求,有一个默认的error图片,大部分地方都用这个图片。但是有的地方我们用圆角,有的地方我们用圆形,如果用Glide的transform变换的话,error将不会跟随实际的图片变换,但是我们又不想不同的地方取更换图片,或者直接把ImageView弄成CircleImageView之类的,这里提供一种跟随实际图片转换的方法。

Glide 使用Transformation 时保持 placeholder、error统一的一种方式_第1张图片
比如上图的图片,我们要全局应用,适配圆角和圆形变换。我们要做的很简单。

首先在BaseActivity里写扩展方法,这样保证Glide正常管理加载时的生命周期。配置全局统一的error。

 fun ImageView.loadAny(
    data: Any?,
    builder: RequestBuilder<Drawable>.() -> Unit
) {



    val builder = Glide.with(this.@BaseActivity)
        .load(data)
        .transition(withCrossFade(crossFadeFactory))
//        .skipMemoryCache(true) // 跳过内存缓存
//        .diskCacheStrategy(DiskCacheStrategy.NONE) // 跳过磁盘缓存

        .error(
            Glide.with(context).load(R.mipmap.learn_default_icon).apply(builder)
        )
        .apply(builder)
        .into(this)
}

调用的时候,注意必须在写的扩展方法的作用域调用

  imageView.load(drawableResId = R.drawable.ic_financial_goal_add)

在其他类需要加载可以这样写

        with(activity){
            imageView.load("url")
        }

然后应用转换

  imageView.load("url") {
       apply(RequestOptions.bitmapTransform(CircleCrop()))
                    }

这样就保证error和实际图片都可以应用转换。
这里提供一种思路,大家可以按照自己项目需求取拓展,fragment同理。

你可能感兴趣的:(Android笔记,glide,kotlin,placeholder,error,Transformation)