这里做个记录,做项目时运营给后台商品上传了很多详情图,然而这些图都是很长的图片,ImagView显示不全。
百度各种奇葩的解决方式 :
1.给图片先切割再拼到一起,我在想我是个图片集合确定要这么搞?
2. 在xml属性中加入 android:adjustViewBounds="true" 让每个ImageView自己算你图片的高度?完了ImageView自己自适应控件高度?
反正我是都试了,不是滚动卡顿,就是没用!
其实主要原因 :Bitmap too large to be uploaded into a texture (1160x8390, max=4096x4096)
图片大小不能超过 4096x4096的长宽
意思ImageView默认就给了这么大的长宽,你图片超出那么多,他就不显示。
我的解决办法:
final RequestOptions requestOptions =new RequestOptions().placeholder(0).dontAnimate().error(0);
String picture =mDatas.get(position).getPic();
Glide.with(context).asBitmap().load(picture.startsWith("http")?picture:MyUrl.PRODUCT_URL+picture).apply(requestOptions).into(new SimpleTarget(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) {
double imageHeight = resource.getHeight()*1.00;
double imageWidth = resource.getWidth()*1.00;
double imageTotalHeight =width*(imageHeight/imageWidth);
holder.imageView.setLayoutParams(new LinearLayout.LayoutParams(width,(int)imageTotalHeight));
holder.imageView.setImageBitmap(resource);
}
});
使用 Giled onResourceReady方法获取资源文件的宽和高(切记这里的宽和高一定要是double或者浮点型,否则会失去精度。主要代码已标粗)
进行等比换算,最后重新设定ImageView的宽高就这么简单!
如果你又更好的方式留言反馈,感谢!!!
网友评论