簡體   English   中英

從 ImageView 上的 url 加載 svg 文件

[英]Load svg file from url on ImageView

我有一個用於Jira REST API這種類型的 URL,URL 末尾沒有SVG擴展名或文件名。
在瀏覽器中打開時,它會顯示一個圖像。
我想在ImageView顯示圖像,但這似乎不是來自服務器的文件路徑。

我曾經研究過表示SVG到ImageView距離drawables 在這里,但沒有關於這些類型的URL加載。
我正在使用Volley (如果這很重要)。

當我檢查 Chrome 中的元素並看到Network > Response tab ,我可以看到Content-Type:image/svg+xml;charset=UTF-8

如何在 ImageView 中使用這種類型的 URL 來實現顯示圖像?

ImageView 只接受位圖或 VectorDrawables。
SVG 不是兩者中的任何一個,即使 VectorDrawable 是從它派生出來的。

如果您不想使用外部庫將SVG轉換為Bitmap,那么我可以建議您使用WebView來顯示它


或者,您可能希望使用免費的在線工具將 SVG 轉換為 VectorDrawable。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM