Android Glide实现图片加密解密 自定义格式

转载请标明出处:https://www.jianshu.com/p/3d47987432ab
本文出自:Jlanglang

前言

Glide作为一个简单易用的库,平时我们使用基本上就是
Glide.with(this).load(data).into(view)
本文主要介绍,如何加载已加密的图片.围绕2种类型:

  • File本地资源
  • Url 网络资源

第一次写付费文章.文章之所以弄成付费的也是想试一下
我会尽可能写的没啥毛病.简单.易懂
如果有回复我会根据反馈来更新文章内容.
最后我会留微信,有其他问题也可以问我(不过白天上班比较忙,可能不会及时回复)

环境

Glide版本:4.11
语言:kotlin

 implementation 'com.github.bumptech.glide:glide:4.11.0'
 kapt 'com.github.bumptech.glide:compiler:4.11.0'

第一步- 定义自定义的GlideMoudle

先看代码,这里我以File举例

@GlideModule
class MyGlideModule : AppGlideModule() {
    override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
        super.registerComponents(context, glide, registry)
        //关键代码
        registry.append(File::class.java, InputStream::class.java, DESModelLoader.LoaderFactory())
    }

    /**
     * 这里不开启,避免添加相同的modules两次
     * @return
     */
    override fun isManifestParsingEnabled(): Boolean {
        return false
    }
}

关键代码

  registry.append(File::class.java, InputStream::class.java, MyModelLoader.LoaderFactory())

看源码:

  @NonNull
  public  Registry append(
      @NonNull Class modelClass,
      @NonNull Class dataClass,
      @NonNull ModelLoaderFactory factory) {
    modelLoaderRegistry.append(modelClass, dataClass, factory);
    return this;
  }

1.ModelLoaderFactory factory

为什么这个参数放前面讲
因为另外2个参数都是这个类的泛型.
这个看字母意思就能明白,model加载工厂.
我们要实现的加密解密,会在这个工厂里面操作.所有需要写一个实现类

主要作用是用来创建ModelLoader

2.modelClass

也就是load的类型,也就是加载什么样的数据时会使用上面的工厂
Glide.with(this).load(data).into(view)就是这个load

3.dataClass

这个参数一般就是InputStream,或者它的子类

第二步 实现ModelLoader

你可能感兴趣的:(Android Glide实现图片加密解密 自定义格式)