在Android中从文件加载SVG

问题描述 投票:1回答:1

我想在imageview或webview中显示.svg文件。我不知道哪一个更适合这个目的,想就这个问题提出一些意见。

请记住,我没有在编译时使用该文件,所以我不能在Android Studio中使用VectorDrawable API 21方法,尽管如果它有帮助我可以使用该类。

首先,我需要搜索文件系统(私有应用程序存储)中是否存在.svg,如果没有找到,我必须下载并将其保存在filesytem上。我将使用OkHTTP从网上下载并保存文件。

如果有关于显示.svg的帮助,我已经在这个项目中滑行我想要建议,因为我从未与.svg一起使用滑行。

对于这种问题,我应该使用像svg-android这样的旧库吗?我不知道他们是否可靠。

android vector okhttp android-glide android-vectordrawable
1个回答
1
投票

您可以将Glide用于svg图像。创建一个requestBuilder:

GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder = Glide.with(this)
                .using(Glide.buildStreamModelLoader(Uri.class, this), 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(svgUrl)).into(imageView);

请参阅this示例。

像这样创建svgUrl

    String fileName = "name.jpg";
    String path = Environment.getExternalStorageDirectory() + "/" + fileName;

    File file = new File(path);
    Uri svgUrl = Uri.fromFile(file);
© www.soinside.com 2019 - 2024. All rights reserved.