我想在 ImageView 或 WebView 中显示 .svg 文件。我不知道哪一个更适合这个目的,想听听关于这个问题的一些意见。
请记住,我在编译时没有该文件,因此我无法在 Android Studio 中使用 VectorDrawable API 21 方法,但如果有帮助的话我可以使用该类。
首先,我需要搜索文件系统(私有(private)应用程序存储)中是否没有存储 .svg,如果没有找到,我必须下载并将其保存在文件系统中。我将使用 OkHTTP 从网络下载并保存文件。
我已经在这个项目上使用了 glide,如果这有助于显示 .svg,我希望得到建议,因为我从未使用 glide 处理过 .svg。
对于这种问题我应该使用像 svg-android 这样的旧库吗?我不知道他们是否可靠。
最佳答案
您可以将 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);
关于android - 从 Android 中的文件加载 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45801790/