Я использую Glide для загрузки некоторых изображений асинхронно в некоторые из моих ImageView
s, и я знаю, что он может обрабатывать изображения типа PNG
или JPG
, поскольку он может обрабатывать SVG
.
Вещь, насколько я знаю, способ загрузки этих двух видов изображения отличается. Как:
Загрузка "нормальных" изображений
Glide.with(mContext)
.load("URL")
.into(cardHolder.iv_card);
Загрузка SVG
GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder = Glide.with(mContext)
.using(Glide.buildStreamModelLoader(Uri.class, mContext), InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
.sourceEncoder(new StreamEncoder())
.cacheDecoder(new FileToStreamDecoder<>(new SVGDecoder()))
.decoder(new SVGDecoder())
.listener(new SvgSoftwareLayerSetter<Uri>());
requestBuilder
.diskCacheStrategy(DiskCacheStrategy.NONE)
.load(Uri.parse("URL"))
.into(cardHolder.iv_card);
И если я попытаюсь загрузить SVG с помощью первого метода, это не сработает. Если я попытаюсь загрузить PNG или JPG вторым методом, это тоже не сработает.
Существует ли общий способ загрузки обоих типов изображений с помощью Glide?
Сервер, на котором я получаю эти изображения, не скажу мне тип изображения перед его загрузкой. Это сервер REST, и ресурс будет восстановлен таким образом, как "http://foo.bar/resource"
. Единственный способ узнать тип изображения - прочитать ответ HEAD.