是否可以在 Fresco Lib 上加载 SVG?

Is it possible to load SVG on Fresco Lib?

我正在使用 this slider lib that uses fresco lib instead of Picasso 的修改版本。

我从 RESTful 服务器获取 SVG 作为字符串。加载过程有点像:

protected void bindEventAndShow(final View v, SimpleDraweeView targetImageView){

    // ...

    // This URL is provided elsewhere, just putting it here for readability.
    String url = "http://foo.bar/resource";

    ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() {
        // onFinalImageSet(), onIntermediateImageSet(), onFailure methods here
    }

    DraweeController controller = Fresco.newDraweeControllerBuilder().setControllerListener(controllerListener)
                        .setImageRequest(ImageRequest.fromUri(url))
                        .build();

    // ...

    targetImageView.setHierarchy(hierarchy);
    targetImageView.setController(controller);
}

当我用 PNGJPEG 提供 URL 时,它会产生奇迹。但是如果 URL 返回一个 SVG,它根本不起作用。

我想知道是否可以将 SVG String/File 直接加载到 Fresco 中。如果直接不行,怎么办?

P.S.: 我可以尝试将其转换为 PNGJPG,将其保存在磁盘上,然后再加载它在滑块上,但我不确定这是否是最佳方法。

根据 github 存储库,它们不支持 svg。

https://github.com/facebook/fresco/issues/1008

https://github.com/facebook/fresco/issues/329

你应该使用其他库,比如 glide。

https://github.com/bumptech/glide

一个例子:

https://github.com/bumptech/glide/tree/master/samples/svg/src/main/java/com/bumptech/glide/samples/svg

您仍然可以将 Fresco 库与自定义 SVG 解码器结合使用。

看看this example here.