대신 기존 데이터 여기서 서브 세트를 처리하는 prepend()
을 사용하여 등록, 새로운 유형의 데이터를 처리 append()
와 새로운 ModelLoader
를 등록 ModelLoader가 실패 할 경우 Glide의 기본 동작으로 되돌아 가고 싶습니다. 그러므로 새로운 의 입력 데이터 (CustomImageSizeModelFutureStudio
이라는 튜토리얼에서)를 작성하는 대신, String
의 경우 글라이드에게 String
을 수정하고 URL을 생성할지 여부를 확인하거나 Glide
이 자신의 작업을 수행하도록하십시오. String
을 수정하십시오. 여기 내 구현은 Kotlin
입니다. 이 경우 입력 내용이 "https : // ...."이면 맞춤 URL을 요청합니다. 입력 내용이 "content : // ..."인 경우 메서드로 인해 ModelLoader
이 실패하고 Glide
이 해당 작업을 수행합니다.
AppGlideModule
의 구현 :
@GlideModule
class MyGlideModule : AppGlideModule() {
override fun registerComponents(context: Context?, glide: Glide?, registry: Registry?) {
registry?.prepend(String::class.java, InputStream::class.java, CustomImageSizeUrlLoaderFactory())
}
}
ModelLoaderFactory
의 구현 :
class CustomImageSizeUrlLoaderFactory : ModelLoaderFactory<String, InputStream> {
private val modelCache = ModelCache<String, GlideUrl>(500)
override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader<String, InputStream> {
val modelLoader = multiFactory.build(GlideUrl::class.java, InputStream::class.java)
return CustomImageSizeUrlLoader(modelLoader, modelCache)
}
override fun teardown() {
}
}
BaseGlideUrlLoader
의 구현 :
class CustomImageSizeUrlLoader(concreteLoader: ModelLoader<GlideUrl, InputStream>, modelCache: ModelCache<String, GlideUrl>?) : BaseGlideUrlLoader<String>(concreteLoader, modelCache) {
override fun getUrl(baseImageUrl: String, width: Int, height: Int, options: Options?): String {
return baseImageUrl + "?w=" + width + "&h=" + height;
}
override fun handles(model: String): Boolean {
return baseImageUrl.startsWith("http://")
|| baseImageUrl.startsWith("https://")
}
}
그리고 당신이 일반적으로 할 것입니다 귀하의 글라이드를 호출 튜토리얼처럼하지 않습니다.
글라이드에서'.override (width, height)'메서드를 사용하지 않는 이유는 무엇입니까? 설명을 보려면 [this] (https://github.com/bumptech/glide/issues/1919)를 참조하십시오. – Redman
오버라이드는 이미지 크기를 조정합니다. 가능하면 서버에서 정확한 imageView 크기를 요청하고 싶습니다. 따라서 이미지 크기 조정은 수행되지 않습니다. 이것이 최고의 성능과 최적화입니다. –
@DamiaFuentes API에 포함되지 않은 경우 다른 크기의 이미지를 요청할 수 없습니다. –