Java 使用Glide加载SVG时图像大小太小
我正在使用加载图像 在我的应用程序中,我使用以下示例将SVG图像加载到Java 使用Glide加载SVG时图像大小太小,java,android,svg,android-glide,Java,Android,Svg,Android Glide,我正在使用加载图像 在我的应用程序中,我使用以下示例将SVG图像加载到CardView中的ImageView中 GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder; requestBuilder = Glide.with(mContext) .using(Glide.buildStreamModelLoader(Uri.class, mContext), Input
CardView
中的ImageView
中
GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder;
requestBuilder = Glide.with(mContext)
.using(Glide.buildStreamModelLoader(Uri.class, mContext), InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
.sourceEncoder(new StreamEncoder())
.cacheDecoder(new FileToStreamDecoder<>(new SVGDecoder()))
.decoder(new SVGDecoder())
.placeholder(R.drawable.modulo)
.error(R.drawable.banner_error)
.animate(android.R.anim.fade_in)
.listener(new SvgSoftwareLayerSetter<Uri>());
requestBuilder
.diskCacheStrategy(DiskCacheStrategy.NONE)
.load(Uri.parse("http://foo.bar/blah"))
.into(cardHolder.iv_card);
generirequestbuilder-requestBuilder;
requestBuilder=Glide.with(mContext)
.使用(Glide.buildStreamModelLoader(Uri.class,mContext),InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(新的svgdrawableTrancoder(),PictureDrawable.class)
.sourceEncoder(新的StreamEncoder())
.cacheDecoder(新文件ToStreamDecoder(新SVGDecoder()))
.decoder(新的SVGDecoder())
.占位符(R.可绘制.模)
.错误(R.drawable.banner_错误)
.animate(android.R.anim.fade_in)
.listener(新的SvgSoftwareLayerSetter());
请求生成器
.diskCacheStrategy(diskCacheStrategy.NONE)
.load(Uri.parse(“http://foo.bar/blah"))
.转入(持卡人iv_卡);
ImageView
在XML中的固定宽度为102dp
,固定高度为94dp
。但是图像在加载后变得比应该的更小。我做错什么了吗
scaleType是:android:scaleType=“fitXY”
我决定把这个问题作为一个问题来解决,然后我就可以解决这个问题了 事实证明,这个问题与我的SVG具有固定大小有关,因此要解决它,我必须修改我的
SvgDecoder.decode
方法,并添加这三行:
svg.setDocumentWidth(width);
svg.setDocumentHeight(height);
svg.setDocumentPreserveAspectRatio(PreserveAspectRatio.STRETCH);
该方法现在如下所示:
public Resource<SVG> decode(InputStream source, int width, int height) throws IOException {
try {
SVG svg = SVG.getFromInputStream(source);
svg.setDocumentWidth(width);
svg.setDocumentHeight(height);
svg.setDocumentPreserveAspectRatio(PreserveAspectRatio.STRETCH);
return new SimpleResource<>(svg);
} catch (SVGParseException ex) {
throw new IOException("Cannot load SVG from stream.", ex);
}
}
公共资源解码(InputStream源、int-width、int-height)引发IOException{
试一试{
SVG SVG=SVG.getFromInputStream(源);
svg.setDocumentWidth(宽度);
svg.setDocumentHeight(高度);
setDocumentPreserveSpectratio(preserveSpectratio.STRETCH);
返回新的SimpleResource(svg);
}捕获(SVGParseException ex){
抛出新的IOException(“无法从流中加载SVG。”,ex);
}
}
现在它正常工作了。您在ImageView上设置了scaleType属性了吗?是的,它是android:scaleType=“fitXY”。我不确定,但这可能与。我还没有时间调查那个bug报告。发生这种情况的只是
fitXY
模式吗?