从ImageView上的url加载svg文件

时间:2016-05-26 10:47:42

标签: android svg jira-rest-api

Jira REST API的网址为this,网址末尾没有SVG分机或文件名。
在浏览器中打开时,会显示图像 我想在ImageView中显示图像,但这似乎不是来自服务器的文件路径。

我已经研究过如何从ImageView heredrawables展示SVG,但没有关于从这些类型的网址加载的信息。
我正在使用Volley(如果重要的话)。

当我在Chrome中检查元素并看到Network > Response tab时,我可以看到Content-Type:image/svg+xml;charset=UTF-8

如何在ImageView中使用此类型的URL实现显示图像?

2 个答案:

答案 0 :(得分:2)

ImageView只接受Bitmaps或VectorDrawables 即使VectorDrawable从它下降,SVG也不是两者之一。

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

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

答案 1 :(得分:0)

kotlin + 线圈

添加依赖:

//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)