解决图片自适应高度的问题

自适应的加载方法

 public static void loadImgBySize(Context context, ImageView imageView, String imgUrl, int w, int h) {
        Glide.with(context).load(imgUrl).override(w, h).placeholder(R.mipmap.placeholder)
                .error(R.mipmap.placeholder)
                .crossFade()//设置淡入淡出效果
                .priority(Priority.NORMAL) //下载的优先级
                //all:缓存源资源和转换后的资源 none:不作任何磁盘缓存
                //source:缓存源资源   result:缓存转换后的资源
                .diskCacheStrategy(DiskCacheStrategy.ALL) //缓存策略
                .into(imageView);
    }

用法: w等于屏幕宽  h等于Integer.MAX_VALUE ,这样可以解决图片自适应高度的问题,刚开始我也有点不理解

下面是解释:

ImageView这个控件只配置
<ImageView
    android:id="@+id/wg_dynamic_list_item_bg"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     />
默认按图片比例缩放显示的

上面控件因为设置了宽度是match_parent,高度是自适应

 

下图是在加载图片的时候设置 override 的宽高都一样,都是屏幕的宽度大小,此时ImageView的大小是按override设置时的宽高显示,但是图片的实际宽高是 高比宽大, 即使设置了图片的宽为屏幕的宽,也不会平铺显示,因为等比例缩放,因为ImageView的高 没有满足 图片的高 进行等比例缩放,所以只能在ImageView的高  里面缩放到满足等比例缩放的原则

下图是ImageView的高度是屏幕宽的一半的,ImageView的宽度依旧是屏幕宽

但是,如果设置了override 的 高度足够大,此时就可以忽略高度的存在了,等比例完全可以由宽度决定了

这就证明了可以解决图片自适应高度的问题了

 

Glide常用的几个方法:

1.将图片加载成Bitmap

   public static void loadImgBitmap(Context context,String imgUrl){
        Glide.with(context)
                .load(imgUrl)
                .asBitmap()//强制Glide返回一个Bitmap对象
                .placeholder(R.mipmap.placeholder)
                .error(R.mipmap.placeholder)
                .into(new SimpleTarget<Bitmap>() {
                    @Override
                    public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
                        int width = bitmap.getWidth();
                        int height = bitmap.getHeight();
                        LogUtils.e("width___" + width);
                        LogUtils.e("height___" + height);
                    }
                });
    }

2.加载成圆形

  /**
     * 加载圆图
     *
     * @param context
     * @param imageView
     * @param imgUrl
     */
    public static void loadCircleImage(final Context context, final ImageView imageView, String imgUrl, int resourceId) {
        Glide.with(context)
                .load(imgUrl != null ? imgUrl.trim() : imgUrl)
                .asBitmap()
                .centerCrop()
                .placeholder(resourceId)
                .error(resourceId)
                .diskCacheStrategy(DiskCacheStrategy.ALL) //缓存策略
                .priority(Priority.NORMAL) //下载的优先级
                .into(new BitmapImageViewTarget(imageView) {
                    @Override
                    protected void setResource(Bitmap resource) {
                        RoundedBitmapDrawable circularBitmapDrawable =
                                RoundedBitmapDrawableFactory.create(context.getResources(), resource);
                        circularBitmapDrawable.setCircular(true);
                        imageView.setImageDrawable(circularBitmapDrawable);
                    }
                });
    }

3.自定义角度显示

/**
     * 加载自定义圆角
     *
     * @param context
     * @param imageView
     * @param imgUrl
     */
    public static void loadRoundImage(final Context context, final ImageView imageView, String imgUrl, final float cornerRadius, int resourceId) {
        Glide.with(context)
                .load(imgUrl != null ? imgUrl.trim() : imgUrl)
                .asBitmap()
                .centerCrop()
                .placeholder(resourceId)
                .error(resourceId)
                .diskCacheStrategy(DiskCacheStrategy.ALL) //缓存策略
                .priority(Priority.NORMAL) //下载的优先级
                .into(new BitmapImageViewTarget(imageView) {
                    @Override
                    protected void setResource(Bitmap resource) {
                        RoundedBitmapDrawable circularBitmapDrawable =
                                RoundedBitmapDrawableFactory.create(context.getResources(), resource);
                        circularBitmapDrawable.setCornerRadius(cornerRadius);
                        imageView.setImageDrawable(circularBitmapDrawable);
                    }
                });
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值