android - Glide 不加载 SVG
问题描述
我想显示通过 API 接收到的图像(类型 = SVG)。出于安全原因,加载时需要验证标头才能获取图像。
这是我的 GlideModule:
@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;
}
}
我正在使用数据绑定将接收到的图像直接加载到图像视图中:
@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 函数有问题吗?
解决方案
我认为它不受支持,如 Glide 代码所示:
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 一起工作。
推荐阅读
- python - 如何将函数输出转储到 .txt 文件?
- python - Djago rest 框架 - 尝试更新用户信息时用户名/电子邮件已经存在
- python - 运行 Dataflow 管道时出现 Apache Beam 2.31 弃用警告
- javascript - React Testing Library with Redux - 在动作创建者中模拟 Axios
- components - Reactstrap Card 组件无法正常工作
- javascript - 带有打开按钮的 DOM 操作模式窗口错误
- go - 如何向 map[string]interface{} 添加新值
- java - 使用名称 TABHIBERNATE_SEQUENCES 生成 HIBERNATE_SEQUENCES 表
- sql - 在通常的 FROM 子句中添加 JOINS
- c# - 我将如何添加键绑定切换功能?