自定义控件

Android ImageView显示长图

2021-05-21  本文已影响0人  墨池又雨

这里做个记录,做项目时运营给后台商品上传了很多详情图,然而这些图都是很长的图片,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的宽高就这么简单!

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

上一篇 下一篇

猜你喜欢

热点阅读