Dam*_*tes 5 android android-glide
我遵循了本教程,其中声明了一个自定义 Glide 模块,用于根据ImageView大小从服务器加载不同的图像大小。我还查看了这个Glide wiki,它也解释了同样的事情。
但是,只有当您发送到自定义模块的字符串是 http/https url 时,教程和 Glide wiki 上的实现才有效。我如何修改此自定义模块或创建一个新模块以处理所有其他类型(String、Uri、int 等,如 Glide.load() 所做的那样)并保留教程中提供的功能?
Dam*_*tes -1
不要使用 来注册新ModelLoader数据append()(它处理新类型的数据),而是使用 来注册它prepend()(它处理现有数据的子集),如果您的 ModelLoader 失败,您确实希望回退到 Glide\xe2\x80\x99s 默认行为。因此,不要创建新的Glide输入数据(在教程中名为CustomImageSizeModelFutureStudio),而是告诉 Glide(在 a 的情况下String)检查您是否要修改String并创建您的 url,或者让Glide他在不修改 的情况下完成工作String。这是我在 中的实现Kotlin。在这种情况下,如果您的输入是“https://...”,它将请求您的自定义网址。如果您的输入是“content://...”,您ModelLoader将因该handles()方法而失败,并且Glide会完成它的工作。
实施AppGlideModule:
@GlideModule\nclass MyGlideModule : AppGlideModule() {\n override fun registerComponents(context: Context?, glide: Glide?, registry: Registry?) {\n registry?.prepend(String::class.java, InputStream::class.java, CustomImageSizeUrlLoaderFactory())\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n实施ModelLoaderFactory:
class CustomImageSizeUrlLoaderFactory : ModelLoaderFactory<String, InputStream> {\n private val modelCache = ModelCache<String, GlideUrl>(500)\n\n override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader<String, InputStream> {\n val modelLoader = multiFactory.build(GlideUrl::class.java, InputStream::class.java)\n return CustomImageSizeUrlLoader(modelLoader, modelCache)\n }\n\n override fun teardown() {\n\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n实施BaseGlideUrlLoader:
class CustomImageSizeUrlLoader(concreteLoader: ModelLoader<GlideUrl, InputStream>, modelCache: ModelCache<String, GlideUrl>?) : BaseGlideUrlLoader<String>(concreteLoader, modelCache) {\n override fun getUrl(baseImageUrl: String, width: Int, height: Int, options: Options?): String {\n return baseImageUrl + "?w=" + width + "&h=" + height;\n }\n\n override fun handles(model: String): Boolean {\n return baseImageUrl.startsWith("http://")\n || baseImageUrl.startsWith("https://")\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n并像平常一样调用你的 Glide,而不是像教程那样。
\n| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |