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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014476720/article/details/84838935

自适应的加载方法

 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);
                    }
                });
    }

猜你喜欢

转载自blog.csdn.net/u014476720/article/details/84838935