小编Bac*_* Vu的帖子

Glide 4 - 特定呼叫的ResourceDecoder

在浏览了所有Glide文档和StackOverflow问题和答案之后,我找不到有关在版本4中为单个Glide调用应用资源解码器的任何信息.

在版本Glide 3中,我们可以这样做:

Glide.with(imagePreview.context)
          .load(mediaItem.path)
          .asBitmap()
          .decoder(decoderWithDownSampleAtMost(imagePreview.context))
          .diskCacheStrategy(DiskCacheStrategy.NONE)
          .skipMemoryCache(false)
          .dontAnimate()
          .into(target)
Run Code Online (Sandbox Code Playgroud)
private fun decoderWithDownSampleAtMost(ctx: Context): GifBitmapWrapperResourceDecoder {
    return GifBitmapWrapperResourceDecoder(
        ImageVideoBitmapDecoder(StreamBitmapDecoder(Downsampler.AT_MOST,
            Glide.get(ctx).bitmapPool,
            DecodeFormat.DEFAULT),
            FileDescriptorBitmapDecoder(ctx)),
        GifResourceDecoder(ctx),
        Glide.get(ctx).bitmapPool)
  }
Run Code Online (Sandbox Code Playgroud)

在版本4中,我知道我们可以AppGlideModule用于自定义ResourceDecoder

@GlideModule
class MyAppGlideModule : AppGlideModule() {
    override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
        registry.prepend(String::class.java, Bitmap::class.java, GalleryDecoder(context))
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这适用于所有Glide调用.我怎样才能ResourceDecoder表现得像v3:在个人通话中应用的能力?


更新: 我可以在Glide Github Issues这里咨询后为我们提供一个解决方案https://github.com/bumptech/glide/issues/3522

所以基本上,我需要创建一个自定义Option并使用它来确定我的自定义是否ResourceDecoder会被触发.这是我的样本:

  • 正常 AppGlideModule
@GlideModule
class MyAppGlideModule : AppGlideModule() {
    override fun registerComponents(context: Context, glide: Glide, registry: …
Run Code Online (Sandbox Code Playgroud)

java android android-glide

8
推荐指数
1
解决办法
376
查看次数

标签 统计

android ×1

android-glide ×1

java ×1