Java 使用Glide加载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

我正在使用加载图像

在我的应用程序中,我使用以下示例将SVG图像加载到
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
模式吗?