[英]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.