gpt4 book ai didi

android - 是否可以使用 Glide 来缓存非图像文件,例如视频和 Lottie 动画?

转载 作者:行者123 更新时间:2023-11-29 23:41:21 26 4
gpt4 key购买 nike

Glide是一个用于以各种方式加载图像的库,但我从未见过加载其他类型的内容并将其转发给其他库的示例。

举个例子,我想知道 Glide 是否可以管理 ExoPlayer 的视频和 Lottie animations 的 JSON 文件.

我试图在 Glide 的存储库页面 (here) 上询问它,但没有人告诉我是否可能以及如何。

例如,我们可以有一个图像缓存、一个视频缓存和一个 Lottie 的 json 文件缓存。

这可能吗?如果是,怎么办?

最佳答案

对于 Lottie,您需要这 3 个类:

@GlideModule
class MedisafeGlideModule : AppGlideModule() {
override fun registerComponents(
context: Context, glide: Glide, registry: Registry) {
registry
.register(LottieComposition::class.java, LottieDrawable::class.java, LottieDrawableTranscoder())
.append(InputStream::class.java, LottieComposition::class.java, LottieDecoder())
}

override fun isManifestParsingEnabled() = false
}

第二个:

class LottieDecoder : ResourceDecoder<InputStream, LottieComposition> {

override fun handles(source: InputStream, options: Options): Boolean = true

@Throws(IOException::class)
override fun decode(source: InputStream, width: Int, height: Int, options: Options): Resource<LottieComposition> {
return try {
val lottieResult = LottieCompositionFactory.fromJsonInputStreamSync(source, null)
SimpleResource(lottieResult.value!!)
} catch (ex: Exception) {
throw IOException("Cannot load lottie from stream", ex)
}
}
}

第三个:

class LottieDrawableTranscoder : ResourceTranscoder<LottieComposition, LottieDrawable> {
override fun transcode(toTranscode: Resource<LottieComposition>, options: Options): Resource<LottieDrawable> {
val composition = toTranscode.get()
val lottieDrawable = LottieDrawable()
lottieDrawable.composition = composition
lottieDrawable.repeatCount = ValueAnimator.INFINITE
return SimpleResource(lottieDrawable)
}
}

使用方法:

Glide.with(imageView)
.`as`(LottieDrawable::class.java)
.load(url)
.into(imageView)

关于android - 是否可以使用 Glide 来缓存非图像文件,例如视频和 Lottie 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com