ImageView加载网络图片的大小适配

针对不同尺寸的网络图片,本文介绍了一种通过解析URL中图片尺寸参数并动态调整ImageView大小的方法,确保图片显示清晰且完整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在项目中经常会遇到给ImageView加载网络图片的需求,而服务端给我们的图片size五花八门,我们也得面对五花八门的手机分辨率,此时我们应该给ImageView的layout_width和layout_height设置什么值合适呢?直接match或者wrap肯定不行,会拉伸,导致图片模糊,又不能写固定值,否则可能展示不全。。。下面我说说我的处理方式,解析服务端下发的Url中的size,然后用代码动态设置ImageView的大小即可,代码如下:

if (!TextUtils.isEmpty(imgUrl)) {
            WindowManager wm = (WindowManager) getContext()
                    .getSystemService(Context.WINDOW_SERVICE);
            int width;
            int ivHeight = DisplayUtil.dip2px(100);//给高度设置一个默认值100dp
            try {
                if (wm != null) {
                    width = wm.getDefaultDisplay().getWidth(); //获取屏幕宽度
                    Uri uri = Uri.parse(imgUrl);
                    String size = uri.getQueryParameter("size"); //Url中size的格式为:size=1080x420
                    if (!TextUtils.isEmpty(size) && size.contains("x")) {
                        String[] point = size.split("x");
                        if (TextUtils.isDigitsOnly(point[0]) && TextUtils.isDigitsOnly(point[1])) {
                            if (width > 0) {
                                ivHeight = (int) ((Float.parseFloat(point[1]) / Float.parseFloat(point[0])) * width);//利用宽高比计算出ImageView的合适高度
                            }
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, ivHeight);//可根据具体的父布局选择不同的内部类LayoutParams
            imageView.setLayoutParams(params);
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值