Android ImageView显示长图

时间:2021-7-21 作者:qvyue

这里做个记录,做项目时运营给后台商品上传了很多详情图,然而这些图都是很长的图片,ImagView显示不全。

百度各种奇葩的解决方式  :

1.给图片先切割再拼到一起,我在想我是个图片集合确定要这么搞?

2. 在xml属性中加入 android:adjustViewBounds=”true”  让每个ImageView自己算你图片的高度?完了ImageView自己自适应控件高度?

反正我是都试了,不是滚动卡顿,就是没用!

其实主要原因 :Bitmap too large to be uploaded into a texture (1160×8390, max=4096×4096)

图片大小不能超过 4096×4096的长宽 

意思ImageView默认就给了这么大的长宽,你图片超出那么多,他就不显示。

我的解决办法:

Android 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的宽高就这么简单!

如果你又更好的方式留言反馈,感谢!!!

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。