Android 从ImageView上的url加载svg文件

Android 从ImageView上的url加载svg文件,android,svg,jira-rest-api,Android,Svg,Jira Rest Api,我有一个类型为Jira restapi的URL,URL末尾没有SVG扩展名或文件名。 在浏览器中打开时,会显示图像。 我想在ImageView中显示图像,但这似乎不是来自服务器的文件路径 我已经研究过如何从可绘制文件将SVG显示到图像视图,但没有研究过如何从这些URL类型加载 我正在使用截击(如果有必要的话) 当我检查Chrome中的元素并查看网络>响应选项卡时,我可以看到内容类型:image/svg+xml;字符集=UTF-8 如何在ImageView中使用此类URL显示图像?ImageVie

我有一个类型为
Jira restapi
的URL,URL末尾没有
SVG
扩展名或文件名。
在浏览器中打开时,会显示图像。
我想在
ImageView
中显示图像,但这似乎不是来自服务器的文件路径

我已经研究过如何从
可绘制文件
将SVG显示到
图像视图
,但没有研究过如何从这些URL类型加载 我正在使用
截击
(如果有必要的话)

当我检查Chrome中的元素并查看
网络>响应选项卡
时,我可以看到
内容类型:image/svg+xml;字符集=UTF-8


如何在ImageView中使用此类URL显示图像?

ImageView仅接受位图或矢量绘图功能。
SVG不是这两者中的任何一个,即使VectorDrawable是从它派生出来的

如果您不想使用外部库将SVG转换为位图,那么我建议您使用WebView来显示它



或者,您可能希望使用免费的在线工具将SVG转换为可矢量绘图。

kotlin+Coil

添加依赖项:

//Coil (https://github.com/coil-kt/coil)
implementation("io.coil-kt:coil:1.2.0")
implementation("io.coil-kt:coil-svg:1.2.0")
将此函数添加到代码中:

fun ImageView.loadSvg(url: String) {

val imageLoader = ImageLoader.Builder(this.context)
    .componentRegistry { add(SvgDecoder(this@loadSvg.context)) }
    .build()

val request = ImageRequest.Builder(this.context)
    .crossfade(true)
    .crossfade(500)
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .data(url)
    .target(this)
    .build()

imageLoader.enqueue(request)
}
然后在活动或片段中调用此方法:

imageView.loadSvg("your_file_name.svg")
// OR imageView.loadSvg(url)

我没有使用任何从提供的链接中选择SVG的库。正如建议的那样,我最终使用了
WebView
。很好的解决方法!伟大的不管怎样,我们成功了。