如何使用 Glide 将 svg 图像加载到图像视图

Posted

技术标签:

【中文标题】如何使用 Glide 将 svg 图像加载到图像视图【英文标题】:How to load svg image to image view using Glide 【发布时间】:2021-08-17 10:45:09 【问题描述】:

我在这个 URL 中有一个SVG 图像。 svg image link .我想将这个SVG 图像从url 加载到image view 中。我已使用Glide 将此SVG 图像加载到image view

这是滑翔代码:

 Glide.with( context)
                .setDefaultRequestOptions(new RequestOptions().timeout(60000))
                .load( "https://restcountries.eu/data/zwe.svg" )
                .thumbnail( 0.5f )
                .override( 200, 200 )
                .diskCacheStrategy( DiskCacheStrategy.ALL )
                .listener(new RequestListener<Drawable>() 
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) 
                        progressLayout.setVisibility(View.GONE);
                        return false;
                    

                    @Override
                    public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) 
                        progressLayout.setVisibility(View.GONE);
                        flag_iv.setEnabled(true);
                        return false;
                    

                )
                .into( flag_iv );

XML 代码:

<ImageView
     android:src="@drawable/icon_app"
     android:id="@+id/flag_iv"
     android:layout_
     android:layout_
     android:layout_marginTop="8dp"
     android:layout_marginBottom="8dp"
 />

但它没有被加载。它显示以下错误。

W/Glide: Load failed for https://restcountries.eu/data/afg.svg with size [100x100]

我使用png/jpg 使用Glide 的图像。效果很好。为什么 SVG 没有使用 Glide 加载图像。我搜索了堆栈溢出。每个人都建议不同的图书馆。但它们已经过时了。我想使用Glide 来实现它。请帮我解决一些问题。

【问题讨论】:

它不依赖于 Glide,而是依赖于 .svg 图像。 ImageView 无法显示 .svg 文件。 @blackapps,然后如何在 imageview 中显示 svg 图像。还有其他解决方案吗? 【参考方案1】:

您可以使用 Glide To Vector,

回购:https://github.com/corouteam/GlideToVectorYou

并将 svg 加载到 imageview 中,您可以使用:

GlideToVectorYou
                .init()
                .with(this)
                .withListener(new GlideToVectorYouListener() 
                    @Override
                    public void onLoadFailed() 
                        Toast.makeText(context, "Load failed", Toast.LENGTH_SHORT).show()
                    

                    @Override
                    public void onResourceReady() 
                        Toast.makeText(context, "Image ready", Toast.LENGTH_SHORT).show()
                    
                )
                .setPlaceHolder(placeholderLoading, placeholderError)
                .load(IMAGE_URL, imageview);

【讨论】:

以上是关于如何使用 Glide 将 svg 图像加载到图像视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Glide 将图像保存到内部存储?

Svg Loader监听器

使用 Glide 将图像加载到 Google Maps Marker

有没有办法将图像作为位图加载到 Glide

如何在我的应用中使用 Glide 加载图像?

使用 Glide 库设置完成图像加载后进度条的可见性