我使用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"
答案 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
现在它正常运作。