使用Glide加载SVG时图像尺寸太小

时间:2016-02-19 19:02:33

标签: java android svg android-glide

我使用Glide加载图片。

在我的应用中,我使用以下示例将SVG图像加载到ImageView内的CardView

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);

ImageView在XML上具有固定宽度102dp和固定高度94dp。但是这些图像在加载后会变得比它们应该的要小。我做错了吗?

scaleType为:android:scaleType="fitXY"

img_20160219_155824

1 个答案:

答案 0 :(得分:0)

我决定将此问题打开为an issue on the libs repository,然后我就能解决问题了。

事实证明,这个问题与我的SVG有一个固定的大小有关,所以要解决它我必须修改我的uiMode方法,并添加这三行:

public class Application extends android.app.Application {
    static {
        AppCompatDelegate.setDefaultNightMode(
                AppCompatDelegate.MODE_NIGHT_);
    }

    @Override
    public void onCreate() {
        super.onCreate();

        // add this code for 6.0
        // DO NOT DO THIS. It will trigger a system wide night mode.
        // This is the old answer. Just update appcompat.
        // UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
        // uiManager.setNightMode(UiModeManager.MODE_NIGHT_);
    }
}

该方法现在看起来像这样:

SvgDecoder.decode

现在它正常运作。