现在,在我的应用中,每个占位符的大小都是在xml中设置的,在下载图像后,它会调整 ImageView
高度并产生可怕的视觉效果。
如何获取图像尺寸,即下载并应显示在中
ImageView
,制作与Facebook应用程序实时Feed相同的占位符大小?也许我应该为从服务器下载的json文件中的每个链接包含图像比率,或者Fresco
,Glide
或Picasso
是否有一些技巧可以实现这一点?
答案 0 :(得分:1)
如果要在下载图像之前将占位符调整为实际图像尺寸,则必须以某种方式从服务器获取此信息。您可以像已经建议的那样,将图像尺寸/宽高比包含在请求中,然后使用该信息来预先正确调整视图大小。
由于您提到的这种可怕的视觉效果,Fresco不支持wrap_content,但它支持设置您可以使用服务器数据设置的DraweeView
的宽高比。
答案 1 :(得分:-1)
尝试使用ResourceTranscoder
滑翔请求,如下所述:
Glide
.with(this)
.load(imageUrl)
.asBitmap()
.transcode(new BitmapSizeTranscoder(), Size.class)
.into(new SimpleTarget<Size>() {
@Override public void onResourceReady(Size size, GlideAnimation glideAnimation) {
Log.w("SIZE", String.format(Locale.ENGLISH, "%dx%d", size.width, size.height));
}
});
class Size {
int width;
int height;
}
class BitmapSizeTranscoder implements ResourceTranscoder<Bitmap, Size> {
@Override public Resource<Size> transcode(Resource<Bitmap> toTranscode) {
Bitmap bitmap = toTranscode.get();
Size size = new Size();
size.width = bitmap.getWidth();
size.height = bitmap.getHeight();
return new SimpleResource<>(size);
}
@Override public String getId() {
return getClass().getName();
}
}