固定ImageView的宽度,自适应高度并使用Glide载入网络图片

最近公司在做一个商城项目 需要做类似淘宝店的详情页。
根据需求琢磨了一下,首先是要先获得手机屏幕的宽度,然后根据宽度再求出ImageView的高度,并赋值给ImageView。
由于有复用的情况,所以封装成了一个方法供多次使用。
废话不多说,代码中有注释我直接上代码。

    /**
     *
     * @param context context对象
     * @param imageUrl 图片网络地址
     * @param erroImageId 载入失败图片网络地址
     * @param placeImageId 占位图片网络地址
     * @param imageView 要载入图片的ImageView对象
     */
    public static void loadPicsFitWidth(Context context, final String imageUrl, int erroImageId, int placeImageId, final ImageView imageView) {
        Glide.with(context).load(imageUrl).skipMemoryCache(true).listener(new RequestListener<Drawable>() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                /*
                * 在此处填写具体载入逻辑*/

                /*
                判断imageView对象是否为空
                 */
                if (imageView == null){
                    return false;
                }
                /*
                判断imageView的填充方式,如果不是fitxy的填充方式 设置其填充方式
                 */
                if(imageView.getScaleType()!=ImageView.ScaleType.FIT_XY){
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                }
                /*
                进行宽度为matchparent时的适应imageView的高度计算
                 */
                ViewGroup.LayoutParams params = imageView.getLayoutParams();
                int vw = imageView.getWidth() - imageView.getPaddingLeft() - imageView.getPaddingRight();
                float scale = (float) vw /(float) resource.getIntrinsicWidth();
                int vh = Math.round(resource.getIntrinsicHeight() * scale);
                params.height = vh + imageView.getPaddingTop()+imageView.getPaddingBottom();
                imageView.setLayoutParams(params);
                return false;
            }
        }).placeholder(placeImageId).error(erroImageId).into(imageView);
    }
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值