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
。很好的解决方法!伟大的不管怎样,我们成功了。