首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glide不加载SVG

Glide不加载SVG
EN

Stack Overflow用户
提问于 2021-04-13 20:32:10
回答 1查看 103关注 0票数 0

我想显示通过API接收到的图像(type = SVG)。出于安全原因,在加载时需要使用身份验证头来获取镜像。

这是我的GlideModule:

代码语言:javascript
复制
@GlideModule
    @Excludes(OkHttpLibraryGlideModule.class)
    public class GlideModule extends AppGlideModule {
    
        @Override
        public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
            Lazy<UserRepository> repository = inject(UserRepository.class);
            registry.register(SVG.class, PictureDrawable.class, new SvgDrawableTranscoder()).append(InputStream.class, SVG.class, new SvgDecoder());
    
            OkHttpClient client = new OkHttpClient.Builder()
                    .readTimeout(15L, TimeUnit.SECONDS)
                    .connectTimeout(15L, TimeUnit.SECONDS)
                    .addInterceptor(new AuthInterceptor(repository.getValue()))
                    .build();
    
            registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(client));
        }
    
        @Override
        public boolean isManifestParsingEnabled() {
            return false;
        }
    }

我使用数据绑定将接收到的图像直接加载到图像视图中:

代码语言:javascript
复制
@JvmStatic
@BindingAdapter("loadSvg")
fun loadSvgImage(view: ImageView, url: String?) {
   if (!url.isNullOrEmpty()) {
         val uri = Uri.parse(url)
         val requestBuilder = GlideApp.with(view)
            .`as`(PictureDrawable::class.java)
            .listener(SvgSoftwareLayerSetter())
         requestBuilder.load(uri).into(view)
   }
}

图像不显示,但也没有警告/错误消息。

我的GlideModule/Binding函数有问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-14 10:17:11

我认为它不受支持,正如Glide代码所表明的那样:

代码语言:javascript
复制
enum ImageType {
  GIF(true),
  JPEG(false),
  RAW(false),
  /** PNG type with alpha. */
  PNG_A(true),
  /** PNG type without alpha. */
  PNG(false),
  /** WebP type with alpha. */
  WEBP_A(true),
  /** WebP type without alpha. */
  WEBP(false),
  /** Unrecognized type. */
  UNKNOWN(false);

列表中没有SVG。

然而,有一款名为PainterSVG的应用程序似乎也在使用Glide,我看到了大多数Glide的功能,比如占位符、居中、缩略图。我不确定他们是如何在SVG中工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67074942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档